diff --git a/app/Models/Role.php b/app/Models/Role.php index 2b29f43..c188463 100644 --- a/app/Models/Role.php +++ b/app/Models/Role.php @@ -26,6 +26,10 @@ class Role extends Model return $this->belongsToMany(Permission::class,"role_permission"); } + public function users(){ + return $this->belongsToMany(Role::class,'user_role'); + } + public function getActivitylogOptions(): LogOptions { return LogOptions::defaults(); diff --git a/app/Models/User.php b/app/Models/User.php index 90ae061..200fe1f 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -57,6 +57,10 @@ class User extends Authenticatable return $this->belongsToMany(Role::class,'user_role')->with("permissions"); } + public function forgetPermission(){ + Cache::forget("permission_".$this->id); + } + public function getPermission(){ $user = $this; return Cache::rememberForever("permission_".$this->id, function() use ($user){ diff --git a/app/Repositories/Auth/RoleRepository.php b/app/Repositories/Auth/RoleRepository.php index a55825e..84de474 100644 --- a/app/Repositories/Auth/RoleRepository.php +++ b/app/Repositories/Auth/RoleRepository.php @@ -41,11 +41,20 @@ class RoleRepository if (@$params["permissions"]){ $model->permissions()->sync($params["permissions"]); } + + foreach($model->users as $user){ + $user->forgetPermission(); + } + return $model; } public function delete($model){ + foreach($model->users as $user){ + $user->forgetPermission(); + } + $model->delete(); } } diff --git a/app/Repositories/Auth/UserRepository.php b/app/Repositories/Auth/UserRepository.php index 06d9ca8..c27a4d7 100644 --- a/app/Repositories/Auth/UserRepository.php +++ b/app/Repositories/Auth/UserRepository.php @@ -31,6 +31,8 @@ class UserRepository $user = User::create($params); if (@$params["roles"]){ $user->roles()->sync($params["roles"]); + + $user->forgetPermission(); } return $user; } @@ -40,6 +42,8 @@ class UserRepository $user->update($params); if (@$params["roles"]){ $user->roles()->sync($params["roles"]); + + $user->forgetPermission(); } return $user; }