如何使用Laravel的Authority包

时间:2014-11-26 14:44:00

标签: laravel permissions user-roles authority

经过一番搜索,我成功安装了Authority-l4包以用于我的Laravel项目。文档清晰但很小(没有太多信息/示例)。这就是我的配置文件看起来像atm:

return array[

    'initialize' => function($authority) {
        $user = $authority->getCurrentUser();

        $authority->addAlias('manage', ['create', 'read', 'update', 'delete']);

        if($user->hasRole('admin')) {
            //Admin can manage all resources
            $authority->allow('manage', 'all');
        }

        // User can manage his own post
        Authority::allow('manage', 'User', function($self, $user){
            return $self->getCurrentUser()->id === $user->id;
        });

        // User can manage his own post
        Authority::allow('manage', 'Post', function($self, $post){
            return $self->getCurrentUser()->id === $post->id;
        });
    }

];

我对此有一些疑问:

  1. 如何向用户添加角色?存在hasRole(),为什么不setRole()
  2. 我注意到没有任何东西被保存到数据库中,这不是更好吗?
  3. 如何将我的数据库与权限一起使用?有人能给我一个良好的开端,我现在已经四个小时了。
  4. 在一些文章中,他们说应该将类Role更改为具有许多权限而不是具有许多权限的用户,这不是更好吗?
  5. 可能我正在考虑这个包的困难,搜索互联网也无济于事。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

我是管理局的作者,虽然它主要是由Conar Welsh编写的,但我保留了权威-14。

  1. 由于包中定义的角色只是一个Eloquent关系,因此您可以像在Eloquent中的任何其他关系一样简单地添加它们。
  2. 我不知道你在这里问什么,你能改写一下吗?
  3. 您能详细说明自述文件中的内容(通用内容以上部分)吗?
  4. 可能 - 两者都有效。您不需要使用此结构来使用Authority-l4。它只是一个可选结构,您可以100%自由设置,如您所愿。我个人根本不使用它,只使用它生成的权威门面。我的大多数权限都没有存储在数据库中,因此它起到了一个作用。
  5. 权威背后的想法是它与实现无关。它真的不关心您存储数据的位置,您只需要告诉权限如何处理您的规则。阅读上面引用的自述文件部分和权威核心回购的自述文件应该能够让您大致了解它如何加载信息 - 除此之外的任何事情都由您自行决定。