美文网首页
Laravel-ACL 角色相关操作

Laravel-ACL 角色相关操作

作者: 伍源辉 | 来源:发表于2017-01-04 17:15 被阅读21次

    创建角色

    $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 角色相关操作

          本文链接:https://www.haomeiwen.com/subject/dxzovttx.html