refactor: ♻️ make user policies strict to conceptor role

This commit is contained in:
Corentin Huet 2025-10-16 16:20:47 +02:00
parent 58c116f2f0
commit 5d5a4c828f
2 changed files with 15 additions and 35 deletions

View file

@ -23,13 +23,11 @@ class UserPolicy
* Determine whether the user can view the model.
*
* @param \App\Models\User $authUser
* @param \App\Models\User $user
* @return boolean
*/
public function view(User $authUser, User $user): bool
public function view(User $authUser): bool
{
return UserStaticRules::atLeastRole($authUser, RoleEnum::conceptor) and
UserStaticRules::atLeastRole($authUser, $user->role);
return UserStaticRules::atLeastRole($authUser, RoleEnum::conceptor);
}
/**
@ -47,84 +45,66 @@ class UserPolicy
* Determine whether the user can update the model.
*
* @param \App\Models\User $authUser
* @param \App\Models\User $user
* @return boolean
*/
public function update(User $authUser, User $user): bool
public function update(User $authUser): bool
{
return $authUser->getRouteKey() === $user->getRouteKey() or
(UserStaticRules::atLeastRole($authUser, RoleEnum::conceptor) and
UserStaticRules::atLeastRole($authUser, $user->role));
return UserStaticRules::atLeastRole($authUser, RoleEnum::conceptor);
}
/**
* Determine whether the user can delete the model.
*
* @param \App\Models\User $authUser
* @param \App\Models\User $user
* @return boolean
*/
public function delete(User $authUser, User $user): bool
public function delete(User $authUser): bool
{
return $authUser->getRouteKey() !== $user->getRouteKey() and
UserStaticRules::atLeastRole($authUser, RoleEnum::conceptor) and
UserStaticRules::atLeastRole($authUser, $user->role);
return UserStaticRules::atLeastRole($authUser, RoleEnum::conceptor);
}
/**
* Determine whether the user can restore the model.
*
* @param \App\Models\User $authUser
* @param \App\Models\User $user
* @return boolean
*/
public function restore(User $authUser, User $user): bool
public function restore(User $authUser): bool
{
return $authUser->getRouteKey() !== $user->getRouteKey() and
UserStaticRules::atLeastRole($authUser, RoleEnum::conceptor) and
UserStaticRules::atLeastRole($authUser, $user->role);
return UserStaticRules::atLeastRole($authUser, RoleEnum::conceptor);
}
/**
* Determine whether the user can permanently delete the model.
*
* @param \App\Models\User $authUser
* @param \App\Models\User $user
* @return booleanean
*/
public function forceDelete(User $authUser, User $user): bool
public function forceDelete(User $authUser): bool
{
return $authUser->getRouteKey() !== $user->getRouteKey() and
UserStaticRules::atLeastRole($authUser, RoleEnum::conceptor) and
UserStaticRules::atLeastRole($authUser, $user->role);
return UserStaticRules::atLeastRole($authUser, RoleEnum::conceptor);
}
/**
* Determine whether the user can duplicate the model.
*
* @param \App\Models\User $authUser
* @param \App\Models\User $user
* @return booleanean
*/
public function duplicate(User $authUser, User $user): bool
public function duplicate(User $authUser): bool
{
return $authUser->getRouteKey() !== $user->getRouteKey() and
UserStaticRules::atLeastRole($authUser, RoleEnum::conceptor) and
UserStaticRules::atLeastRole($authUser, $user->role);
return UserStaticRules::atLeastRole($authUser, RoleEnum::conceptor);
}
/**
* Determine whether the user can publish/unpublish the model.
*
* @param \App\Models\User $authUser
* @param \App\Models\User $user
* @return booleanean
*/
public function changePublished(User $authUser, User $user): bool
public function changePublished(User $authUser): bool
{
return $authUser->getRouteKey() !== $user->getRouteKey() and
UserStaticRules::atLeastRole($authUser, RoleEnum::conceptor) and
UserStaticRules::atLeastRole($authUser, $user->role);
return UserStaticRules::atLeastRole($authUser, RoleEnum::conceptor);
}
/**

View file

@ -69,7 +69,7 @@
</div>
</button>
<div class="dropdown-menu dropdown-menu-end m-0 text-center" aria-labelledby="navbarDropdown">
@can('viewAny', \App\Models\User::class)
@can('update', \App\Models\User::class)
<a class="dropdown-item w-100 text-decoration-none p-2" data-bs-tooltip="tooltip" data-bs-placement="left"
href="{{ route('bo.users.edit',auth('backend')->user()->getKey()) }}"
title="{{ __('Accéder à son profil') }}">