diff --git a/app/Policies/UserPolicy.php b/app/Policies/UserPolicy.php index 7b68a5f..9cdf972 100644 --- a/app/Policies/UserPolicy.php +++ b/app/Policies/UserPolicy.php @@ -126,4 +126,17 @@ class UserPolicy UserStaticRules::atLeastRole($authUser, RoleEnum::conceptor) and UserStaticRules::atLeastRole($authUser, $user->role); } + + /** + * Determine whether the user can update associated brands to the model. + * + * @param \App\Models\User $authUser + * @param \App\Models\User $user + * @return booleanean + */ + public function changeBrands(User $authUser, User $user): bool + { + return UserStaticRules::atLeastRole($authUser, RoleEnum::conceptor) && + $user->role->equals(RoleEnum::marketing); + } } diff --git a/resources/views/bo/pages/users/create.blade.php b/resources/views/bo/pages/users/create.blade.php index 01ddda7..77883b4 100644 --- a/resources/views/bo/pages/users/create.blade.php +++ b/resources/views/bo/pages/users/create.blade.php @@ -7,7 +7,7 @@ @section('content')
- diff --git a/resources/views/bo/pages/users/edit.blade.php b/resources/views/bo/pages/users/edit.blade.php index 1b56b14..6572c7b 100644 --- a/resources/views/bo/pages/users/edit.blade.php +++ b/resources/views/bo/pages/users/edit.blade.php @@ -7,7 +7,7 @@ @section('content')
- diff --git a/resources/views/bo/pages/users/form.blade.php b/resources/views/bo/pages/users/form.blade.php index f35dc55..f27cd08 100644 --- a/resources/views/bo/pages/users/form.blade.php +++ b/resources/views/bo/pages/users/form.blade.php @@ -108,35 +108,37 @@
{{-- BRAND --}} -
-
- {{ str(__('models.classes.brands'))->ucfirst() }} -
- @include('bo.partials.inputs.search-belongs-to-dropdown', [ - 'id' => 'questionBrand', - 'label' => __(':model associées', [ - 'model' => str(__('models.classes.brands'))->ucfirst(), - ]), - 'name' => 'brand_id', - 'relation' => 'brands', - 'model' => $userModel, - 'targetClass' => 'App\Models\Brand', - 'modelListPaginate' => $brandModels ?? [], - 'constructedRoute' => route('bo.brands.json-paginate'), - 'fieldName' => 'name', - 'multiple' => true, - 'required' => true, - 'disabled' => false, - 'placeholder' => __('Rechercher une :model', [ - 'model' => str(__('models.classes.brands'))->singular(), - ]), - 'helper' => __('Sélectionner des :model qui seront associées parmis la liste.', [ - 'model' => __('models.classes.brands'), - ]), - ]) -
-
-
+ @can('changeBrands', $userModel) +
+
+ {{ str(__('models.classes.brands'))->ucfirst() }} +
+ @include('bo.partials.inputs.search-belongs-to-dropdown', [ + 'id' => 'userBrand', + 'label' => __(':model associées', [ + 'model' => str(__('models.classes.brands'))->ucfirst(), + ]), + 'name' => 'brand_id', + 'relation' => 'brands', + 'model' => $userModel, + 'targetClass' => 'App\Models\Brand', + 'modelListPaginate' => $brandModels ?? [], + 'constructedRoute' => route('bo.brands.json-paginate'), + 'fieldName' => 'name', + 'multiple' => true, + 'required' => true, + 'disabled' => false, + 'placeholder' => __('Rechercher une :model', [ + 'model' => str(__('models.classes.brands'))->singular(), + ]), + 'helper' => __('Sélectionner des :model qui seront associées parmis la liste.', [ + 'model' => __('models.classes.brands'), + ]), + ]) +
+
+
+ @endcan

{{ __('* Champs obligatoires') }}

@@ -154,20 +156,6 @@ event.preventDefault(); submit.click(); }); - - // If the role is marketing, need brands associated. - const selectRole = document.getElementById('userRole'); - const userRoleFieldset = document.getElementById('userRoleFieldset'); - selectRole.addEventListener('change', (event) => { - updateBrandsFieldsetStatus(Number(event.target.value)); - }); - updateBrandsFieldsetStatus(Number("{{ $userModel->role?->value() ?? \App\Enums\Users\RoleEnum::conceptor->value() }}")); - function updateBrandsFieldsetStatus(value) { - const marketingValue = {{ \App\Enums\Users\RoleEnum::marketing->value() }}; - const condition = value !== marketingValue; - userRoleFieldset.disabled = condition; - userRoleFieldset.className = `h-100 border p-3 ${condition ? 'd-none' : ''}`; - } }); @endpush diff --git a/routes/breadcrumbs-bo.php b/routes/breadcrumbs-bo.php index 8ac0d46..efe6310 100644 --- a/routes/breadcrumbs-bo.php +++ b/routes/breadcrumbs-bo.php @@ -22,9 +22,9 @@ Breadcrumbs::for('bo.users.edit', function (Generator $trail, User $user) { $trail->parent('bo.users.index'); $trail->push(Str::ucfirst(trans('crud.actions.edit')), route('bo.users.edit', $user)); }); -Breadcrumbs::for('bo.users.duplicate', function (Generator $trail, User $user) { +Breadcrumbs::for('bo.users.duplicate', function (Generator $trail) { $trail->parent('bo.users.index'); - $trail->push(Str::ucfirst(trans('crud.actions.duplicate')), route('bo.users.duplicate', $user)); + $trail->push(Str::ucfirst(trans('crud.actions.duplicate'))); }); // * ACTIVITY_LOGS