Laravel-ACL 角色相关操作

创建角色

$roleAdmin = new Role();
$roleAdmin->name = 'Administrator';
$roleAdmin->slug = 'administrator';
$roleAdmin->description = 'manage administration privileges';
$roleAdmin->save();

//或者使用数组形式创建

$role = new Role();
$roleAdmin = $role->create([
    'name' => 'Administrator',
    'slug' => 'administrator',
    'description' => 'manage administration privileges'
]);

$role = new Role();
$roleModerator = $role->create([
    'name' => 'Moderator',
    'slug' => 'moderator',
    'description' => 'manage moderator privileges'
]);

分配角色给用户

提醒: 你可以传入对象、数组、role->id 或者只是 slug。

首先要在你的 User 模型中引入 HasRole trait 。

//...
use Kodeine\Acl\Traits\HasRole;
class User extends Model
{

    use HasRole;
//...
$user = User::find(1);
// 传入 object
$user->assignRole($roleAdmin);
// 传入 id
$user->assignRole($roleAdmin->id);
// 只传入 slug
$user->assignRole('administrator');

一次过传入多个角色:

// 数组形式传入多个角色
$user->assignRole(array($roleAdmin, $roleModerator));
// 或者传入通过逗号分隔的多个角色 slugs
$user->assignRole('administrator, moderator');

提醒: 如果角色不存在系统会抛出异常。

为用户撤销角色

你可以使用类似的方式为用户撤销角色

提醒: 你可以传入对象、数组、role->id 或者只是 slug。

$user = User::find(1);
// 传入 object
$user->revokeRole($roleAdmin);
// 传入 id
$user->revokeRole($roleAdmin->id);
// 只传入 slug
$user->revokeRole('administrator');

一次过传入多个角色:

// 数组形式传入多个角色
$user->revokeRole(array($roleAdmin, $roleModerator));
// 或者传入通过逗号分隔的多个角色 slugs
$user->revokeRole('administrator, moderator');

提醒: 如果角色不存在系统会抛出异常。

同步角色给用户

你可以传入角色对象数据、ids 或者 slugs 来同步角色给用户(参数中新的角色会插入到中间表,参数中没有的角色会从中间表移除)。

$user->syncRoles([1,2,3]);
$user->syncRoles('administrator, moderator');
$user->syncRoles((array($roleAdmin, $roleModerator));

提醒: 如果角色不存在系统会抛出异常。

撤销用户的所有角色

$user->revokeAllRoles();

获取用户的所有角色

$user = User::first();
$user->getRoles();

你可能感兴趣的:(Laravel-ACL 角色相关操作)