Merge branch 'user-published' into 'laravel-10'

makes the user's published field invisible to the authenticated user

See merge request ldc-web/projets/laravel-base-project!34
This commit is contained in:
Vincent BRIDIER 2024-12-09 13:51:27 +00:00
commit 8903f09a31
3 changed files with 28 additions and 20 deletions

View file

@ -25,8 +25,14 @@ class UpdateUserRequest extends StoreUserRequest
*/
protected function prepareForValidation(): void
{
/** @var \App\Models\User $userModel */
$userModel = request()->route()->parameter('user');
/** @var \App\Models\User $authUserModel */
$authUserModel = auth('backend')->user();
$this->merge([
'published' => $this->boolean('published'),
'published' => $authUserModel->getKey() !== $userModel->getKey() ?
$this->boolean('published') :
true,
'password' => $this->input('password') ??
\optional($this->route('user'))->password,
'password_confirmation' => $this->input('password_confirmation') ??

View file

@ -122,8 +122,9 @@ class UserPolicy
*/
public function changePublished(User $authUser, User $user): bool
{
return $authUser->getRouteKey() !== $user->getRouteKey() and
return ($user->getRouteKey()) ? $authUser->getRouteKey() !== $user->getRouteKey() and
UserStaticRules::atLeastRole($authUser, RoleEnum::admin) and
UserStaticRules::atLeastRole($authUser, $user->role);
UserStaticRules::atLeastRole($authUser, $user->role) :
UserStaticRules::atLeastRole($authUser, RoleEnum::admin);
}
}

View file

@ -82,8 +82,7 @@
'required' => true,
'associatedModels' => Arr::where(
\App\Enums\Users\RoleEnum::toArray(),
fn(object $role) => $role->value >=
auth('backend')->user()->role->value()),
fn(object $role) => $role->value >= auth('backend')->user()->role->value()),
'helper' => __('Sélectionnez un rôle dans la liste déroulante.'),
])
</div>
@ -124,22 +123,24 @@
</fieldset>
</div>
{{-- STATUS --}}
<div class="col-12 col-md-6 mb-3">
<fieldset class="h-100 border p-3">
<legend>{{ __('Visibilité') }}</legend>
<div class="row">
<div class="col-12">
@include('bo.partials.inputs.tinyint-boolean', [
'id' => 'userPublished',
'name' => 'published',
'label' => __('État de publication de l\':model', ['model' => __('models.classes.user')]),
'helper' => __('Deux réponses possibles : oui ou non.'),
'model' => $userModel ?? null,
])
@can('changePublished', $userModel)
<div class="col-12 col-md-6 mb-3">
<fieldset class="h-100 border p-3">
<legend>{{ __('Visibilité') }}</legend>
<div class="row">
<div class="col-12">
@include('bo.partials.inputs.tinyint-boolean', [
'id' => 'userPublished',
'name' => 'published',
'label' => __('État de publication de l\':model', ['model' => __('models.classes.user')]),
'helper' => __('Deux réponses possibles : oui ou non.'),
'model' => $userModel ?? null,
])
</div>
</div>
</div>
</fieldset>
</div>
</fieldset>
</div>
@endcan
<div class="col-12 text-center">
<p><b>{{ __('* Champs obligatoires') }}</b></p>
</div>