gpt4 book ai didi

php - Laravel 5.1 调用未定义的方法 Illuminate\Database\Query\Builder::isSuperAdmin()

转载 作者:行者123 更新时间:2023-12-01 14:19:45 25 4
gpt4 key购买 nike

所以我想了解 Laravel 5.1 中的用户授权。

基于docs我已按如下方式设置 AuthServiceProvider 启动方法:

public function boot(GateContract $gate)
{
parent::registerPolicies($gate);

$gate->define('view-dashboard', function ($user, $post) {
return $user->id === $post->user_id;
});

$gate->before(function ($user, $ability) {
if($user->isSuperAdmin()) {
return true;
}
});
}

在我的 Controller 中我有:

    if (Gate::denies('view-dashboard')) {
return view('auth.login');
}

return view('admin.home');

当我没有登录时,我会看到 auth.login View 。但是,登录后出现以下错误:

BadMethodCallException in Builder.php line 2025: Call to undefined method Illuminate\Database\Query\Builder::isSuperAdmin()

首先,由于我直接从文档中提取了这些行,所以我不确定为什么会出现该错误。有什么想法吗?

其次,文档似乎没有解释如何将给定用户指定为 super 管理员,或者如何赋予用户特定的能力(例如我示例中的“查看仪表板”能力)。我该怎么做?

更新:这是我的用户模型:

namespace App;

use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Model implements AuthenticatableContract,
AuthorizableContract,
CanResetPasswordContract
{
use Authenticatable, Authorizable, CanResetPassword;

/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';

/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['name', 'email', 'password'];

/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = ['password', 'remember_token'];
}

最佳答案

在您的模型 User 中,您没有定义方法 isSuperAdmin

public function isSuperAdmin()
{
// your logic here
return true; // or false
}

关于php - Laravel 5.1 调用未定义的方法 Illuminate\Database\Query\Builder::isSuperAdmin(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32684080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com