前言
我使用的版本
Laravel: 7
php: 7.3
spatie/laravel-permission: 3
可先參考 文件
介紹
每個網站開發往往都需要使用者的權限設定
這些功能其實就那些 ~
spatie/laravel-permission 主要就是要解決這個問題
每個使用者可以設定多角色/多權限 相當方便
快速上手
安裝及初始化
1
| composer require spatie/laravel-permission
|
1
2
3
4
| 'providers' => [
// ...
Spatie\Permission\PermissionServiceProvider::class,
];
|
- 與終端機執行,引入套件的檔案
裡面含有 migration、config檔(
config/permission.php
)
1
| php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
|
1
2
3
4
5
6
7
8
9
| use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles; // ------ 加這個 Use Class**
class User extends Authenticatable
{
use HasRoles; // ------ 加這個**
// ...
}
|
建立角色及權限
1
2
3
4
5
| use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
$role = Role::create(['name' => 'writer']);
$permission = Permission::create(['name' => 'edit articles'])
|
將角色設定某些權限
1
2
| $role = Role::find(1);
$role->permissions()->sync($permissions_id);
|
給使用者角色與權限
1
2
3
4
5
6
7
| // 給角色
$role = Role::find($role_id);
$user->assignRole($role);
// 給權限
$permission = Permission::find($permission_id);
$user->givePermissionTo($permission);
|
取得使用者角色或權限
1
2
| $user = User::find(1);
$roles = $user->roles;
|
1
2
3
4
5
6
7
| $user = User::find(1);
# 方法一
$user->getPermissionsViaRoles();
# 方法二
$user->getAllPermissions();
|
其他
更多資訊可以參閱他們官方的文件
可先參考 文件
結語
這個套件真的滿好用的
且使用者也多,萬一遇到問題 Stackoverflow 也很多解法
真心推薦給大家 😄