diff --git a/app/Http/Controllers/LicensesController.php b/app/Http/Controllers/LicensesController.php index 96a68be31..708d1df59 100755 --- a/app/Http/Controllers/LicensesController.php +++ b/app/Http/Controllers/LicensesController.php @@ -179,7 +179,9 @@ class LicensesController extends Controller $license->purchase_date = $request->input('purchase_date'); $license->purchase_order = $request->input('purchase_order'); $license->reassignable = $request->input('reassignable', 0); - $license->serial = $request->input('serial'); + if (Gate::allows('viewKeys', $license)) { + $license->serial = $request->input('serial'); + } $license->termination_date = $request->input('termination_date'); $license->seats = e($request->input('seats')); $license->manufacturer_id = $request->input('manufacturer_id'); diff --git a/app/Policies/LicensePolicy.php b/app/Policies/LicensePolicy.php index 0fa4f0ca7..6eb5562a1 100644 --- a/app/Policies/LicensePolicy.php +++ b/app/Policies/LicensePolicy.php @@ -13,16 +13,27 @@ class LicensePolicy extends CheckoutablePermissionsPolicy return 'licenses'; } - /** - * Determine whether the user can view license keys - * - * @param \App\Models\User $user - * @param \App\Models\License $license - * @return mixed - */ + /** + * Determine whether the user can view license keys. + * This gets a little tricky, UX/logic-wise. If a user has the ability + * to create a license (which requires a product key), shouldn't they + * have the ability to see the product key as well? + * + * Example: I create the license, realize I need to change + * something (maybe I got the product key wrong), and now I can never + * see/edit that product key. + * + * @see https://github.com/snipe/snipe-it/issues/6956 + * @param \App\Models\User $user + * @param \App\Models\License $license + * @return mixed + */ public function viewKeys(User $user, License $license = null) { - return $user->hasAccess('licenses.keys'); + if ($user->hasAccess('licenses.keys') || $user->hasAccess('licenses.create') || $user->hasAccess('licenses.edit')) { + return true; + } + return false; } } diff --git a/resources/views/licenses/checkin.blade.php b/resources/views/licenses/checkin.blade.php index d34b6e944..5db998caa 100755 --- a/resources/views/licenses/checkin.blade.php +++ b/resources/views/licenses/checkin.blade.php @@ -38,7 +38,13 @@
-

{{ $licenseSeat->license->serial }}

+

+ @can('viewKeys', $licenseSeat->license) + {{ $licenseSeat->license->serial }} + @else + ------------ + @endcan +

diff --git a/resources/views/licenses/checkout.blade.php b/resources/views/licenses/checkout.blade.php index 1fe0c4280..d92354d5c 100755 --- a/resources/views/licenses/checkout.blade.php +++ b/resources/views/licenses/checkout.blade.php @@ -37,7 +37,13 @@
-

{{ $license->serial }}

+

+ @can('viewKeys', $license) + {{ $license->serial }} + @else + ------------ + @endcan +

diff --git a/resources/views/licenses/edit.blade.php b/resources/views/licenses/edit.blade.php index 18b55acbd..58d56f3a2 100755 --- a/resources/views/licenses/edit.blade.php +++ b/resources/views/licenses/edit.blade.php @@ -10,7 +10,10 @@ @section('inputFields') @include ('partials.forms.edit.name', ['translated_name' => trans('admin/licenses/form.name')]) @include ('partials.forms.edit.category-select', ['translated_name' => trans('admin/categories/general.category_name'), 'fieldname' => 'category_id', 'required' => 'true', 'category_type' => 'license']) + + +@can('viewKeys', $item)
@@ -18,6 +21,7 @@ {!! $errors->first('serial', ' :message') !!}
+@endcan
diff --git a/resources/views/reports/licenses.blade.php b/resources/views/reports/licenses.blade.php index 2cbf6febf..42a274498 100644 --- a/resources/views/reports/licenses.blade.php +++ b/resources/views/reports/licenses.blade.php @@ -51,7 +51,13 @@ {{ is_null($license->company) ? '' : $license->company->name }} {{ $license->name }} - {{ mb_strimwidth($license->serial, 0, 50, "...") }} + + @can('viewKeys', $license) + {{ $license->serial }} + @else + ------------ + @endcan + {{ $license->seats }} {{ $license->remaincount() }} {{ $license->expiration_date }} diff --git a/resources/views/users/print.blade.php b/resources/views/users/print.blade.php index 974f32d99..2984133aa 100644 --- a/resources/views/users/print.blade.php +++ b/resources/views/users/print.blade.php @@ -117,7 +117,13 @@ {{ $lcounter }} {{ $license->name }} - {{ $license->serial }} + + @can('viewKeys', $license) + {{ $license->serial }} + @else + ------------ + @endcan + {{ $license->assetlog->first()->created_at }} @php diff --git a/resources/views/users/view.blade.php b/resources/views/users/view.blade.php index 5c87eb361..d1e005c07 100755 --- a/resources/views/users/view.blade.php +++ b/resources/views/users/view.blade.php @@ -375,7 +375,11 @@ {!! $license->present()->nameUrl() !!} + @can('viewKeys', $license) {!! $license->present()->serialUrl() !!} + @else + ------------ + @endcan @can('update', $license)