Laravel-permission 使用說明


 

操作用戶

// 查詢直接分配給用戶的權限列表(用戶 權限 關系表)(直接分配)
$permissions = $user->permissions; 或者 $user->getDirectPermissions()

// 查詢用戶角色的權限列表(用戶 角色 關系表)(角色分配)
$user->getPermissionsViaRoles();
// 獲取用戶的所有權限 (包含角色分配 和 直接分配的)
$permissions = $user->getAllPermissions();

// 獲取該用戶的所有角色
$roles = $user->getRoleNames();

// 僅返回具有角色 'writer' 的用戶, 要有 HasRoles 特征
$users = User::role('writer')->get();

// 僅返回具有 'edit articles'(繼承或直接)權限的用戶,(包含角色分配 和 直接分配)
$users = User::permission('edit articles')->get();
// 判斷用戶是否有該權限 (用戶 角色 關系表,用戶 權限 關系表) (參數:權限)
$user->can('edit articles');

// 判斷用戶是否有該權限 (用戶 角色 關系表,用戶 權限 關系表) (參數:權限)
$user->hasPermissionTo('edit articles');

// 判斷用戶是否有該權限 (用戶 角色 關系表,用戶 權限 關系表) (參數:權限)(支持多個權限, 其中一個為true返回true)
$user->hasAnyPermission(['edit articles', 1, 5]);

// 判斷用戶是否有該角色 (參數:角色)
$user->hasRole('管理員')

// 判斷用戶是否有該角色 (可查詢多個)(其中一個為true返回true)(參數:角色)
$user->hasAnyRole(Role::all());

// 增加用戶權限(用戶 權限 關系表插入)  (參數:權限, 可以一個,多個字符串逗號隔開,或者數組)
$user->givePermissionTo('edit articles');

// 添加權限,同時刪除舊權限
$user->syncPermissions(['edit articles', 'delete articles']);

// 刪除用戶權限
$user->revokePermissionTo('edit articles');
// 增加用戶角色 (用戶 角色 關系表插入)(可分配一個或多個) (參數:角色id) $user->assignRole(3);

// 添加角色,同時刪除舊角色
$user->syncRoles(['writer', 'admin']);

// 刪除用戶角色
$user->removeRole('writer');





 

操作角色

// 創建角色
use Spatie\Permission\Models\Role;
$role = Role::create(['name' => '無敵管理員']);


// 增加角色權限(原有權限不變) (參數:權限)
$role->givePermissionTo($permission);
// 增加角色權限(刪除原有權限) (參數:權限)
$role->syncPermissions($permissions);

// 刪除角色權限
$role->revokePermissionTo($permission);
 
        

操作權限

// 創建權限
use Spatie\Permission\Models\Permission;
$permission = Permission::create(['name' => 'Create Article2']);

// 增加角色權限(參數:角色)
$permission->assignRole($role);
//增加角色權限(參數:角色)(目前沒發現和上面的有什么區別)
$permission->syncRoles($roles);

// 刪除角色權限
$permission->removeRole($role);


 

 

定義守衛 和 使用HasRoles特征

use Illuminate\Database\Eloquent\Model;
use Spatie\Permission\Traits\HasRoles;

class Page extends Model
{
   use HasRoles;

   protected $guard_name = 'web'; // 使用任何你想要的守衛

   // ...
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM