可以为用户模型创建策略。
我创建了这样的政策
php artisan make:policy UserPolicy --model=User
使用CRUD操作获得UserPolicy.php。
然后在我添加的AuthServiceProvider.php中
protected $policies = [
// 'App\Model' => 'App\Policies\ModelPolicy',
User::class => UserPolicy::class,
];
但是什么也没发生。据我了解,默认情况下,生成的“用户模型”策略在每个操作上均返回false,我什至将其明确添加到UserPolicy类中:
public function create(User $user)
{
return false;
}
仍然可以创建用户。
稍后,我将需要检查用户是否尝试编辑自己的帖子。非管理员用户应禁止一切操作,但不能编辑自己的配置文件(模型)。
我肯定想念一些明显的东西。
更新:
如果我放
$this->authorize('create', $user);
在UsersController创建方法中,它将调用创建方法Policy,因此它表明存在问题
...
use App\Policies\UserPolicy;
use App\User;
...
protected $policies = [
// 'App\Model' => 'App\Policies\ModelPolicy',
User::class => UserPolicy::class,
];
在AuthServiceProvider内部。
答案 0 :(得分:1)
您可以为用户策略编写此代码
在UserPolicy.php中:
public function update(User $user, User $model)
{
return $user->id === $model->id;
}
例如,通过此代码,您可以仅更新自己的个人资料。
答案 1 :(得分:0)
您需要将其放入控制器的功能中
$this->authorize('create',$user)
答案 2 :(得分:0)
在控制器函数$ this-> authorizeForUser($ currentUser,'create',User :: class)的行下面放置