【问题标题】:Apply global scope based on user role in Laravel 5.5在 Laravel 5.5 中根据用户角色应用全局范围
【发布时间】:2018-05-07 20:51:45
【问题描述】:

对于某些模型,如果登录用户不是超级管理员,我需要应用全局范围。在模型的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);
        }
    }
}

范围从未应用!我在这里做错了什么?如何实现基于用户角色应用范围的目标?谢谢

【问题讨论】:

  • 上述代码适用的范围是用户不是超级管理员。

标签: laravel-5.5 laravel-eloquent user-roles laravel-query-builder global-scope


【解决方案1】:

您无法在 Eloquent 模型的 boot 方法中访问当前经过身份验证的用户 - Auth 中间件此时尚未运行。

您应该做的是在您的RoleScopeapply 方法中执行超级管理员检查。

【讨论】:

    猜你喜欢
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 2014-11-23
    • 2018-07-12
    • 1970-01-01
    • 2016-04-14
    • 2015-03-17
    相关资源
    最近更新 更多