Laravel Spatie 教程

Laravel Spatie 是 Laravel 中管理使用者角色和權限最強大的軟體包之一。

Spatie 的 Laravel Permission 讓實施 RBAC(基於角色的存取控制)變得比以往更容易。

在本文中,我們將了解如何正確安裝和配置 Shield 插件,以快速輕鬆地使用權限管理。

預計閱讀時間: 4 minuti

Laravel 權限

Laravel Permission 是一個功能強大的套件,用於在 Laravel 應用程式中定義角色、分配權限和管理使用者存取權限。它具有易於使用的語法和強大的功能。

在 Filament 中有一個插件,可以使用 spatie / Laravel-permission 來管理 Filament 面板中的資源、頁面和小部件的權限。

要求

為了更好地理解本文的內容,我們建議您先閱讀我解釋的文章 基本概念 長絲,和 安裝 長絲。我還建議您深入研究儲存庫上的項目 GitHub上 並始終在關於長絲的文章.

燈絲屏蔽

燈絲屏蔽 由經驗豐富的全端開發人員 Bezhan Salleh 創建。使用 Filament Shield,您可以輕鬆管理支援最新 Laravel spatie/權限的角色和權限。

如果我們想為我們的專案安裝 Filament Shield,我們需要做的第一件事是執行以下命令:

composer require bezhansalleh/filament-shield

現在我們需要添加 Trait HasRolesmodel User,因此 use Spatie\Permission\Traits\HasRoles

use Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable implements FilamentUser
{
    use HasFactory, Notifiable, HasRoles;

透過這種方式,我們將角色和權限的管理與模型連結起來 User.

然後我們發布文件 config 我們使用以下命令設定配置:

php artisan vendor:publish --tag=filament-shield-config

我們在裡面註冊插件AdminPanelProvider 對於所需的燈絲面板,我們在文件中使用此語法來執行此操作 app\Providers\Filament\AdminPanelProvider.php,

-> plugin ([ 
      \BezhanSalleh\FilamentShield\FilamentShieldPlugin :: make () 
])

安裝

我們現在安裝它 di 燈絲 在我們的專案中,我們執行以下命令:

php artisan shield:install

現在我們有一個帶有角色表的新角色選單,預設角色是超級管理員,

燈絲屏蔽作用

當我們建立角色時,我們將看到角色建立表單,其中包含我們建立的所有範本和資源,以及所有角色的權限以及他們可以執行和不能執行的操作。

燈絲護盾新角色

文件裡面 config/filament-shield.php 權限和角色有不同的設定參數。

Laravel Spatie 盾 管理 Filament 資源的權限,並以兩種方式進行:預設方式和自訂方式。在預設模式下,它管理 Filament 資源的預設權限,並且前綴在檔案中預先定義 config/filament-shield.php.

權限前綴
權限前綴

如果您需要新增單一權限(例如鎖定)並使其可用於所有資源,只需將其新增至上面列出的配置金鑰即可。

如果您只需要一種資源的特定權限,則需要使用自訂方法。如果你有這個需求, 您可以點擊此處了解更多信息i.

為目錄中的每個資源定義策略 app/Policies.

為了使 Filament Shield 角色正常運作,您必須授予對 RoleResource 手段 RolePolicy,為此,您應該啟用該參數 register_role_policy,在你的 AuthServiceProvider:

註冊角色策略
註冊角色策略

您可以在儲存庫中找到此範例以及完整的配置,您可以查看它 點擊此連結訪問 GitHub 上的存儲庫.

作者