88 lines
1.9 KiB
PHP
88 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace App\Policies;
|
|
|
|
use App\Models\User;
|
|
use Illuminate\Auth\Access\HandlesAuthorization;
|
|
|
|
class UserPolicy extends BasicPolicy
|
|
{
|
|
use HandlesAuthorization;
|
|
protected $entity = 'users';
|
|
|
|
/**
|
|
* Can current user updates other users (or himself?)
|
|
*
|
|
* @param User $currentUser
|
|
* @param User $user
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function update(User $currentUser, User $user)
|
|
{
|
|
return $currentUser->id == $user->id || $currentUser->hasAbility('update-users');
|
|
}
|
|
|
|
/**
|
|
* Can user create other users?
|
|
*
|
|
* @param User $user
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function create(User $user) {
|
|
return $user->hasAbility('create-users');
|
|
}
|
|
|
|
/**
|
|
* Does current user has permissions for setting permissions to other users?
|
|
*
|
|
* @param User $currentUser
|
|
* @param User $user
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function setPermissions(User $currentUser, User $user)
|
|
{
|
|
if ($currentUser->id == $user->id || $user->role == User::ROLE_VISITOR) {
|
|
return false;
|
|
}
|
|
|
|
return $currentUser->hasAbility('set-permissions-users');
|
|
}
|
|
|
|
/**
|
|
* Can logged user change status of other users?
|
|
*
|
|
* @param User $currentUser
|
|
* @param User $user
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function changeStatus(User $currentUser, User $user)
|
|
{
|
|
if ($currentUser->id == $user->id) {
|
|
return false;
|
|
}
|
|
|
|
return $currentUser->hasAbility('change-status-users');
|
|
}
|
|
|
|
/**
|
|
* Can current user change role of other users?
|
|
*
|
|
* @param User $currentUser
|
|
* @param User $user
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function changeRole(User $currentUser, User $user)
|
|
{
|
|
if ($currentUser->id == $user->id) {
|
|
return false;
|
|
}
|
|
|
|
return $currentUser->hasAbility('change-role-users');
|
|
}
|
|
}
|