diff --git a/app/Http/Controllers/CustomFieldsController.php b/app/Http/Controllers/CustomFieldsController.php
index 43540ed421..4eb31450ee 100644
--- a/app/Http/Controllers/CustomFieldsController.php
+++ b/app/Http/Controllers/CustomFieldsController.php
@@ -86,14 +86,24 @@ class CustomFieldsController extends Controller
{
$this->authorize('create', CustomField::class);
+ $show_in_email = $request->get("show_in_email", 0);
+ $display_in_user_view = $request->get("display_in_user_view", 0);
+
+ // Override the display settings if the field is encrypted
+ if ($request->get("field_encrypted") == '1') {
+ $show_in_email = '0';
+ $display_in_user_view = '0';
+ }
+
$field = new CustomField([
"name" => trim($request->get("name")),
"element" => $request->get("element"),
"help_text" => $request->get("help_text"),
"field_values" => $request->get("field_values"),
"field_encrypted" => $request->get("field_encrypted", 0),
- "show_in_email" => $request->get("show_in_email", 0),
+ "show_in_email" => $show_in_email,
"is_unique" => $request->get("is_unique", 0),
+ "display_in_user_view" => $display_in_user_view,
"user_id" => Auth::id()
]);
@@ -221,13 +231,24 @@ class CustomFieldsController extends Controller
$this->authorize('update', $field);
+
+ $show_in_email = $request->get("show_in_email", 0);
+ $display_in_user_view = $request->get("display_in_user_view", 0);
+
+ // Override the display settings if the field is encrypted
+ if ($request->get("field_encrypted") == '1') {
+ $show_in_email = '0';
+ $display_in_user_view = '0';
+ }
+
$field->name = trim(e($request->get("name")));
$field->element = e($request->get("element"));
$field->field_values = e($request->get("field_values"));
$field->user_id = Auth::id();
$field->help_text = $request->get("help_text");
- $field->show_in_email = $request->get("show_in_email", 0);
+ $field->show_in_email = $show_in_email;
$field->is_unique = $request->get("is_unique", 0);
+ $field->display_in_user_view = $display_in_user_view;
if ($request->get('format') == 'CUSTOM REGEX') {
$field->format = e($request->get('custom_format'));
diff --git a/app/Http/Controllers/ViewAssetsController.php b/app/Http/Controllers/ViewAssetsController.php
index 63267cbd05..55499ab22b 100755
--- a/app/Http/Controllers/ViewAssetsController.php
+++ b/app/Http/Controllers/ViewAssetsController.php
@@ -8,6 +8,7 @@ use App\Models\AssetModel;
use App\Models\Company;
use App\Models\Setting;
use App\Models\User;
+use App\Models\CustomField;
use App\Notifications\RequestAssetCancelation;
use App\Notifications\RequestAssetNotification;
use Illuminate\Http\Request;
@@ -29,23 +30,32 @@ class ViewAssetsController extends Controller
public function getIndex()
{
$user = User::with(
+ 'assets',
'assets.model',
+ 'assets.model.fieldset.fields',
'consumables',
'accessories',
'licenses',
- 'userloc',
- 'userlog'
- )->withTrashed()->find(Auth::user()->id);
+ )->find(Auth::user()->id);
- $userlog = $user->userlog->load('item', 'user', 'target');
+ // Loop through all the custom fields that are applied to any model the user has assigned
+ foreach ($user->assets as $asset) {
+ foreach ($asset->model->fieldset->fields as $field) {
+ // check and make sure they're allowed to see the value of the custom field
+ if ($field->display_in_user_view == '1') {
+ $field_array[$field->db_column] = $field->name;
+ }
+ }
+ }
+
+ // Since some models may re-use the same fieldsets/fields, let's make the array unique so we don't repeat columns
+ array_unique($field_array);
if (isset($user->id)) {
- return view('account/view-assets', compact('user', 'userlog'))
+ return view('account/view-assets', compact('user', 'field_array' ))
->with('settings', Setting::getSettings());
- } else {
- // Redirect to the user management page
- return redirect()->route('users.index')->with('error', trans('admin/users/message.user_not_found', compact('id')));
}
+
// Redirect to the user management page
return redirect()->route('users.index')
->with('error', trans('admin/users/message.user_not_found', $user->id));
diff --git a/app/Http/Transformers/CustomFieldsTransformer.php b/app/Http/Transformers/CustomFieldsTransformer.php
index 472a000002..9ada5183ab 100644
--- a/app/Http/Transformers/CustomFieldsTransformer.php
+++ b/app/Http/Transformers/CustomFieldsTransformer.php
@@ -47,6 +47,7 @@ class CustomFieldsTransformer
'field_values_array' => ($field->field_values) ? explode("\r\n", e($field->field_values)) : null,
'type' => e($field->element),
'required' => (($field->pivot) && ($field->pivot->required=='1')) ? true : false,
+ 'display_in_user_view' => ($field->display_in_user_view =='1') ? true : false,
'created_at' => Helper::getFormattedDateObject($field->created_at, 'datetime'),
'updated_at' => Helper::getFormattedDateObject($field->updated_at, 'datetime'),
];
diff --git a/app/Models/CustomField.php b/app/Models/CustomField.php
index 0f19ccb446..e94b3fcc2f 100644
--- a/app/Models/CustomField.php
+++ b/app/Models/CustomField.php
@@ -64,6 +64,7 @@ class CustomField extends Model
'help_text',
'show_in_email',
'is_unique',
+ 'display_in_user_view',
];
/**
diff --git a/database/migrations/2022_11_07_134348_add_display_to_user_in_custom_fields.php b/database/migrations/2022_11_07_134348_add_display_to_user_in_custom_fields.php
new file mode 100644
index 0000000000..a29b223df7
--- /dev/null
+++ b/database/migrations/2022_11_07_134348_add_display_to_user_in_custom_fields.php
@@ -0,0 +1,32 @@
+boolean('display_in_user_view')->nullable()->default(0);
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('custom_fields', function (Blueprint $table) {
+ $table->dropColumn('display_in_user_view');
+ });
+ }
+}
diff --git a/resources/lang/en/admin/custom_fields/general.php b/resources/lang/en/admin/custom_fields/general.php
index 7434117830..92bf240a76 100644
--- a/resources/lang/en/admin/custom_fields/general.php
+++ b/resources/lang/en/admin/custom_fields/general.php
@@ -44,4 +44,6 @@ return [
'db_convert_warning' => 'WARNING. This field is in the custom fields table as :db_column
but should be :expected
.',
'is_unique' => 'This value must be unique across all assets',
'unique' => 'Unique',
+ 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page',
+ 'display_in_user_view_table' => 'Visible to User',
];
diff --git a/resources/views/account/view-assets.blade.php b/resources/views/account/view-assets.blade.php
index 6081091c23..c1a391e453 100755
--- a/resources/views/account/view-assets.blade.php
+++ b/resources/views/account/view-assets.blade.php
@@ -129,7 +129,7 @@