Laravel 4 权限

3

以下是我目前得到的SQL模型:

enter image description here

这是在我的用户控制器中的样子(stackoverflow格式):

if (Auth::user()->is('admin'))
                    {
                            if (Auth::user()->can('delete'))
                            {
                                    echo 'hurra!';
                            }
                    }

权限键可能看起来像这样

admin.delete 可能会像user.can.buy这样。

现在我想知道它是否正确,以及如何在方法中执行它:

public function is($roleName)
        {
                $role = $this->roles;

                if ($role->name == $roleName)
                {
                        return true;
                }

                return false;
        }

我认为这个不错。
但是,
public function can($permissionKey)
        {
                $permissions = $this->roles->permissions()
                        ->where('key', $permissionKey)
                        ->count();

                if ($permissions > 0)
                {
                        return true;
                }

                return false;
        }

我觉得这样做有点别扭。这是使用Eloquent ORM选择数据的正确方式吗?

提前感谢!


1
对我来说一切看起来都很好。如果你想比较代码,我已经在http://github.com/Toddish/Verify上创建了一个类似的捆绑包。 - Toddish
谢谢你的提示。我一定会去查看你的想法。 - Megamind
1个回答

0

我安装了一个分析器并检查了所有触发的SQL查询:

select * from users where id = '1' limit 1

select * from roles where id = '1' limit 1

select count(*) as aggregate from permissions inner join permission_role on permissions.id = permission_role.permission_id where permission_role.role_id = '1' and key = 'view.admin'

在我看来,这看起来很好,所以我认为我做得没问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接