權(quán)限:spatie/laravel-permission

1 、安裝

composer require spatie/laravel-permission

1.1、發(fā)布

php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"

1.2、生成數(shù)據(jù)庫

php artisan migrate

1.3、生成配置文件

php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="config"

2、操作及使用?

注意事項

?(1)判斷一個用戶是否擁有某個權(quán)限,前提是這個權(quán)限存在,如果權(quán)限不存在就去判斷,會報500錯誤

?(2)用戶權(quán)限分為:繼承權(quán)限(即從角色獲得的權(quán)限)、直接權(quán)限(直接賦予的)

?(3)最好不要使用laravel自帶的登錄注冊

2.1、 在 modle? User中 添加 trait

use HasRoles

2.2、 角色使用

#創(chuàng)建角色

$role=Role::create(['name'=>'writer']);

#給角色分配權(quán)限

$role=Role::findByName('writer');

$permission=Permission::findByName('edit_permission');

$role->givePermissionTo($permission);

//或者

$permission->assignRole($role);


2.3 、權(quán)限使用

#創(chuàng)建權(quán)限

Permission::create(['name'=>'edit_permission']);

#判斷用戶是否擁有以下的任何一個權(quán)限,?(支持多個權(quán)限, 其中一個為true返回true)

$user->hasAnyPermission(['edit articles','publish articles','unpublish articles']);

$user->hasAnyPermission(['edit articles',1,5]);

#添加用戶直接權(quán)限,同時刪除用戶其余所有的角色?(可 角色名稱 或者 角色id,但是不能刪除繼承權(quán)限)?

$user->syncPermissions(['edit articles', 'delete articles']);?

#增加用戶權(quán)限(用戶 權(quán)限 關(guān)系表插入) (參數(shù):權(quán)限, 可以一個,多個字符串逗號隔開,或者數(shù)組)?

$user->givePermissionTo('edit articles');??

#僅返回具有 'edit articles'(繼承或直接)權(quán)限的用戶,(包含角色分配 和 直接分配)?

$users = User::permission('edit articles')->get();??


2.4、用戶使用

$users = Users::find(1);

?2.4.1、用戶使用權(quán)限

#判斷用戶是否擁有某個權(quán)限,可權(quán)限名稱、或者權(quán)限ID

$user->hasPermissionTo('read_permission');

#獲取用戶的所有權(quán)限 (包含繼承權(quán)限 和 直接權(quán)限的)

$user->getAllPermissions();?

#獲取直接權(quán)限?

$user->getDirectPermissions();?// Or $user->permissions;?

?#獲取用戶角色繼承的權(quán)限

?$user->getPermissionsViaRoles();??

#增加用戶權(quán)限(用戶 權(quán)限 關(guān)系表插入) (參數(shù):權(quán)限, 可以一個,多個字符串逗號隔開,或者數(shù)組)

$user->givePermissionTo('edit articles');?

#刪除用戶權(quán)限

$user->revokePermissionTo('read_permission');


2.4.2、用戶使用角色

#判斷用戶是否有該角色

$user->hasRole('writer');

#判斷用戶是否有以下任何一個角色,有其中一個就返回true

$user->hasAnyRole(['writer','read']);

#獲取該用戶所有角色

$user->getRoleNames();?

#增加用戶角色 (用戶 角色 關(guān)系表插入)(可分配一個或多個) (參數(shù):角色id)

$user->assignRole(3);?

#刪除用戶角色 (角色名稱 或者 角色id) 注意:刪除前 必須提前定義?guard_name

$user-> guard_name = "admin";

$user->removeRole('writer');?

#添加用戶角色,同時刪除用戶其余所有的角色?(可 角色名稱 或者 角色id)

$user->syncRoles([2])

#獲取某個角色的所有用戶

$users=User::role('writer')->get();


3、 laravel-psermission git 地址

[文檔]?https://github.com/spatie/laravel-permission#laravel

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容