forget cache permission when update role
WMS API/ERP-API/pipeline/head This commit looks good Details

This commit is contained in:
Husnu Setiawan 2025-02-12 17:29:22 +07:00
parent 43937cbb04
commit 346bc8513e
4 changed files with 21 additions and 0 deletions

View File

@ -26,6 +26,10 @@ class Role extends Model
return $this->belongsToMany(Permission::class,"role_permission"); return $this->belongsToMany(Permission::class,"role_permission");
} }
public function users(){
return $this->belongsToMany(Role::class,'user_role');
}
public function getActivitylogOptions(): LogOptions public function getActivitylogOptions(): LogOptions
{ {
return LogOptions::defaults(); return LogOptions::defaults();

View File

@ -57,6 +57,10 @@ class User extends Authenticatable
return $this->belongsToMany(Role::class,'user_role')->with("permissions"); return $this->belongsToMany(Role::class,'user_role')->with("permissions");
} }
public function forgetPermission(){
Cache::forget("permission_".$this->id);
}
public function getPermission(){ public function getPermission(){
$user = $this; $user = $this;
return Cache::rememberForever("permission_".$this->id, function() use ($user){ return Cache::rememberForever("permission_".$this->id, function() use ($user){

View File

@ -41,11 +41,20 @@ class RoleRepository
if (@$params["permissions"]){ if (@$params["permissions"]){
$model->permissions()->sync($params["permissions"]); $model->permissions()->sync($params["permissions"]);
} }
foreach($model->users as $user){
$user->forgetPermission();
}
return $model; return $model;
} }
public function delete($model){ public function delete($model){
foreach($model->users as $user){
$user->forgetPermission();
}
$model->delete(); $model->delete();
} }
} }

View File

@ -31,6 +31,8 @@ class UserRepository
$user = User::create($params); $user = User::create($params);
if (@$params["roles"]){ if (@$params["roles"]){
$user->roles()->sync($params["roles"]); $user->roles()->sync($params["roles"]);
$user->forgetPermission();
} }
return $user; return $user;
} }
@ -40,6 +42,8 @@ class UserRepository
$user->update($params); $user->update($params);
if (@$params["roles"]){ if (@$params["roles"]){
$user->roles()->sync($params["roles"]); $user->roles()->sync($params["roles"]);
$user->forgetPermission();
} }
return $user; return $user;
} }