Featured image of post Laravel 用戶角色/權限輕鬆設定的套件

Laravel 用戶角色/權限輕鬆設定的套件

前言

我使用的版本

Laravel: 7
php: 7.3
spatie/laravel-permission: 3

可先參考 文件

介紹

每個網站開發往往都需要使用者的權限設定
這些功能其實就那些 ~

  • 哪些角色可以使用?
  • 哪些權限可以使用?

spatie/laravel-permission 主要就是要解決這個問題 每個使用者可以設定多角色/多權限 相當方便

快速上手

安裝及初始化

  • 在終端機執行安裝
1
composer require spatie/laravel-permission
  • 開啟專案檔案 config/app.php
1
2
3
4
'providers' => [
    // ...
    Spatie\Permission\PermissionServiceProvider::class,
];
  • 與終端機執行,引入套件的檔案 裡面含有 migration、config檔(config/permission.php)
1
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
  • 再於終端機執行,建立資料表
1
php artisan migrate
  • 在需要使用權限的Model 引用
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 也很多解法
真心推薦給大家 😄

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy