根据角色确定模型

时间:2017-12-13 14:24:39

标签: php laravel authentication laravel-5 datamodel

我有一个用于保存用户的表格。用户可以是学生,教师,校长或其组合,我利用角色来实现这一目标(包名为spatie/laravel-permission)。

我为学生,教师和校长提供具有自己的逻辑,查询等的特定模型,但我没有针对这些模型的特定表格。

目前,我通过使用教师模型中的boot()函数来确定用户是否是教师(同样适用于学生和校长):

protected static function boot()
    {
        parent::boot();

        //Todo: make use of role package to determine if model is teacher or not.
        static::addGlobalScope('teacher', function (Builder $builder) {
            $builder->whereExists(function ($query) {
                $query->select(DB::raw(1))
                    ->from('teacher_offering')
                    ->whereRaw('teacher_offering.user_id = users.id');
            });
        });
    }

此查询效果很好,但我想知道是否可以通过使用Spatie提供的Laravel权限包来简化此操作。

我的问题是:我可以通过检查教师角色是否已分配给用户来替换boot()函数中的查询吗?

我可以使用此软件包实现此目的,还是应该继续使用此查询?

1 个答案:

答案 0 :(得分:0)

检查用户角色的用例是什么?如果您尝试阻止访问某些网页,请使用Middleware检查角色。我认为范围不适合这个。

spatie/laravel-permission包提供<div id="me"></div>方法,假设您的hasRole($role)实现了User特征:

HasRoles