Laravel中RBAC的modle層(超簡)

關於用戶model層

/** * 用戶有哪些角色 */ public function roles() { // 使用withPivot能夠把關係表中的字段獲取出來 return $this->belongsToMany(\App\AdminRole::class, 'admin_role_user', 'user_id', 'role_id')->withPivot(['user_id', 'role_id']); }this

/** * 用戶是否有某個角色(某些角色) */ public function isInRoles($roles) { return !!$roles->intersect($this->roles)->count(); }code

/** * 用戶是否有某個權限 */ public function hasPermission($permission) { return $this->isInRoles($permission->roles); }it

/** * 給用戶分配角色 */ public function assignRole($role) { return $this->roles()->save($role); }io

/** * 取消用戶的角色 */ public function deleteRole($role) { return $this->roles()->detach($role); }function

關於角色層的model

/** * 當前角色的全部權限 */ public function permissions() { return $this->belongsToMany(\App\AdminPermission::class, 'admin_permission_role', 'role_id', 'permission_id')->withPivot(['role_id', 'permission_id']); }class

/** * 給角色分配權限 */ public function grantPermission($permission) { return $this->permissions()->save($permission); }model

/** * 取消角色的權限 */ public function deletePermission($permission) { return $this->permissions()->detach($permission); }權限

/** * 判斷角色是否有權限 */ public function hasPermission($permission) { return $this->permissions->contains($permission); }ant

關於權限層的model

/** * 當前權限屬於哪一個角色 */ public function roles() { return $this->belongsToMany(\App\AdminRole::class, 'admin_permission_role', 'permission_id', 'role_id')->withPivot(['role_id', 'permission']); }co

相關文章
相關標籤/搜索