diff --git a/app/Http/Controllers/Api/ComponentsController.php b/app/Http/Controllers/Api/ComponentsController.php
index 8b51344424..4806caf8a3 100644
--- a/app/Http/Controllers/Api/ComponentsController.php
+++ b/app/Http/Controllers/Api/ComponentsController.php
@@ -235,7 +235,7 @@ class ComponentsController extends Controller
$this->authorize('checkout', $component);
$validator = Validator::make($request->all(), [
- 'asset_id' => 'required|exists:assets,id',
+ 'assigned_to' => 'required|exists:assets,id',
'assigned_qty' => "required|numeric|min:1|digits_between:1,".$component->numRemaining(),
]);
diff --git a/app/Http/Controllers/ReportsController.php b/app/Http/Controllers/ReportsController.php
index b2a86bf240..0f078326c9 100644
--- a/app/Http/Controllers/ReportsController.php
+++ b/app/Http/Controllers/ReportsController.php
@@ -639,10 +639,16 @@ class ReportsController extends Controller
}
if (($request->filled('created_start')) && ($request->filled('created_end'))) {
- $assets->whereBetween('assets.created_at', [$request->input('created_start'), $request->input('created_end')]);
+ $created_start = \Carbon::parse($request->input('created_start'))->startOfDay();
+ $created_end = \Carbon::parse($request->input('created_end'))->endOfDay();
+
+ $assets->whereBetween('assets.created_at', [$created_start, $created_end]);
}
if (($request->filled('checkout_date_start')) && ($request->filled('checkout_date_end'))) {
- $assets->whereBetween('assets.last_checkout', [$request->input('checkout_date_start'), $request->input('checkout_date_end')]);
+ $checkout_start = \Carbon::parse($request->input('checkout_date_start'))->startOfDay();
+ $checkout_end = \Carbon::parse($request->input('checkout_date_end'))->endOfDay();
+
+ $assets->whereBetween('assets.last_checkout', [$checkout_start, $checkout_end]);
}
if (($request->filled('expected_checkin_start')) && ($request->filled('expected_checkin_end'))) {
@@ -650,7 +656,10 @@ class ReportsController extends Controller
}
if (($request->filled('last_audit_start')) && ($request->filled('last_audit_end'))) {
- $assets->whereBetween('assets.last_audit_date', [$request->input('last_audit_start'), $request->input('last_audit_end')]);
+ $last_audit_start = \Carbon::parse($request->input('last_audit_start'))->startOfDay();
+ $last_audit_end = \Carbon::parse($request->input('last_audit_end'))->endOfDay();
+
+ $assets->whereBetween('assets.last_audit_date', [$last_audit_start, $last_audit_end]);
}
if (($request->filled('next_audit_start')) && ($request->filled('next_audit_end'))) {
diff --git a/app/Http/Transformers/AssetsTransformer.php b/app/Http/Transformers/AssetsTransformer.php
index 869666d7a0..68dc731f07 100644
--- a/app/Http/Transformers/AssetsTransformer.php
+++ b/app/Http/Transformers/AssetsTransformer.php
@@ -102,10 +102,10 @@ class AssetsTransformer
foreach ($asset->model->fieldset->fields as $field) {
if ($field->isFieldDecryptable($asset->{$field->db_column})) {
$decrypted = Helper::gracefulDecrypt($field, $asset->{$field->db_column});
- $value = (Gate::allows('superadmin')) ? $decrypted : strtoupper(trans('admin/custom_fields/general.encrypted'));
+ $value = (Gate::allows('assets.view.encrypted_custom_fields')) ? $decrypted : strtoupper(trans('admin/custom_fields/general.encrypted'));
if ($field->format == 'DATE'){
- if (Gate::allows('superadmin')){
+ if (Gate::allows('assets.view.encrypted_custom_fields')){
$value = Helper::getFormattedDateObject($value, 'date', false);
} else {
$value = strtoupper(trans('admin/custom_fields/general.encrypted'));
diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php
index 7c87895ed2..d14e5738d4 100644
--- a/app/Providers/AuthServiceProvider.php
+++ b/app/Providers/AuthServiceProvider.php
@@ -146,6 +146,11 @@ class AuthServiceProvider extends ServiceProvider
}
});
+ Gate::define('assets.view.encrypted_custom_fields', function ($user) {
+ if($user->hasAccess('assets.view.encrypted_custom_fields')){
+ return true;
+ }
+ });
// -----------------------------------------
// Reports
diff --git a/config/permissions.php b/config/permissions.php
index 0b65a4e26b..10c44a1896 100644
--- a/config/permissions.php
+++ b/config/permissions.php
@@ -106,6 +106,13 @@ return [
'display' => true,
],
+ [
+ 'permission' => 'assets.view.encrypted_custom_fields',
+ 'label' => 'View and Modify Encrypted Custom Fields',
+ 'note' => '',
+ 'display' => true,
+ ],
+
],
'Accessories' => [
diff --git a/package-lock.json b/package-lock.json
index d4d32d4b60..c34a5d405b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15,7 +15,7 @@
"bootstrap-colorpicker": "^2.5.3",
"bootstrap-datepicker": "^1.10.0",
"bootstrap-less": "^3.3.8",
- "bootstrap-table": "1.22.0",
+ "bootstrap-table": "1.22.1",
"chart.js": "^2.9.4",
"css-loader": "^4.0.0",
"ekko-lightbox": "^5.1.1",
@@ -32,7 +32,7 @@
"papaparse": "^4.3.3",
"select2": "4.0.13",
"sheetjs": "^2.0.0",
- "tableexport.jquery.plugin": "1.27.0",
+ "tableexport.jquery.plugin": "1.28.0",
"tether": "^1.4.0",
"vue-resource": "^1.5.2",
"webpack": "^5.87.0"
@@ -3532,9 +3532,9 @@
"license": "MIT"
},
"node_modules/bootstrap-table": {
- "version": "1.22.0",
- "resolved": "https://registry.npmjs.org/bootstrap-table/-/bootstrap-table-1.22.0.tgz",
- "integrity": "sha512-N1MLgPcIOa9cfwr7CaoLOekKJ9nHq/z8lk6LsC3mLUZq77VeMC/vTh+EqN7+iT8JADmoAsX7RqQbYfVxF9ZCig==",
+ "version": "1.22.1",
+ "resolved": "https://registry.npmjs.org/bootstrap-table/-/bootstrap-table-1.22.1.tgz",
+ "integrity": "sha512-Nw8p+BmaiMDSfoer/p49YeI3vJQAWhudxhyKMuqnJBb3NRvCRewMk7JDgiN9SQO3YeSejOirKtcdWpM0dtddWg==",
"peerDependencies": {
"jquery": "3"
}
@@ -10406,10 +10406,11 @@
}
},
"node_modules/tableexport.jquery.plugin": {
- "version": "1.27.0",
- "license": "MIT",
+ "version": "1.28.0",
+ "resolved": "https://registry.npmjs.org/tableexport.jquery.plugin/-/tableexport.jquery.plugin-1.28.0.tgz",
+ "integrity": "sha512-ydDjOhw8A+LOu+801zPXDeMF8MoU1q2HtS2msphCuny0tdXgbXG9GJfA4ll1hBs0ABiAnOaVVZaRuxBmW/qHtw==",
"dependencies": {
- "file-saver": ">=2.0.1",
+ "file-saver": ">=2.0.4",
"html2canvas": ">=1.0.0",
"jquery": ">=3.2.1",
"jspdf": ">=2.0.0",
diff --git a/package.json b/package.json
index 4142ea1ee2..3a7f433e55 100644
--- a/package.json
+++ b/package.json
@@ -34,7 +34,7 @@
"bootstrap-colorpicker": "^2.5.3",
"bootstrap-datepicker": "^1.10.0",
"bootstrap-less": "^3.3.8",
- "bootstrap-table": "1.22.0",
+ "bootstrap-table": "1.22.1",
"chart.js": "^2.9.4",
"css-loader": "^4.0.0",
"ekko-lightbox": "^5.1.1",
@@ -51,7 +51,7 @@
"papaparse": "^4.3.3",
"select2": "4.0.13",
"sheetjs": "^2.0.0",
- "tableexport.jquery.plugin": "1.27.0",
+ "tableexport.jquery.plugin": "1.28.0",
"tether": "^1.4.0",
"vue-resource": "^1.5.2",
"webpack": "^5.87.0"
diff --git a/resources/views/hardware/view.blade.php b/resources/views/hardware/view.blade.php
index 6c1aef99eb..a583602958 100755
--- a/resources/views/hardware/view.blade.php
+++ b/resources/views/hardware/view.blade.php
@@ -410,7 +410,7 @@
@endif
@if ($field->isFieldDecryptable($asset->{$field->db_column_name()} ))
- @can('superuser')
+ @can('assets.view.encrypted_custom_fields')
@if (($field->format=='URL') && ($asset->{$field->db_column_name()}!=''))
{{ Helper::gracefulDecrypt($field, $asset->{$field->db_column_name()}) }}
@elseif (($field->format=='DATE') && ($asset->{$field->db_column_name()}!=''))
diff --git a/resources/views/models/custom_fields_form.blade.php b/resources/views/models/custom_fields_form.blade.php
index cbc6a731ab..011ad4ca9b 100644
--- a/resources/views/models/custom_fields_form.blade.php
+++ b/resources/views/models/custom_fields_form.blade.php
@@ -53,7 +53,7 @@
@else
- @if (($field->field_encrypted=='0') || (Gate::allows('admin')))
+ @if (($field->field_encrypted=='0') || (Gate::allows('assets.view.encrypted_custom_fields')))
@else