对于某些型号,如果登录用户不是超级管理员,我需要应用全局范围。在模型的boot()
方法中,我尝试过这样的事情:
<?php
namespace App;
use Auth;
use App\Scopes\RoleScope;
use Illuminate\Database\Eloquent\Model;
class MyModel extends Model
{
protected static function boot()
{
parent::boot();
if( Auth::check() && ! Auth::user()->isSuperAdmin() ){
static::addGlobalScope(new RoleScope);
}
}
}
scop从未申请过!我在这做错了什么?如何实现基于用户角色应用范围的目标?感谢
答案 0 :(得分:0)
您无法在Eloquent模型的boot
方法中访问当前经过身份验证的用户 - 此时Auth中间件尚未运行。
您应该在apply
的{{1}}方法中执行超级管理员检查。