Вызов $this->authorize('some.permission')
в конструкторе контроллера всегда вызывает ошибку 403. Однако $this->middleware('can:some.permission')
работает как положено. Почему?
Вот как some.permission
, определенный в AuthServiceProvider
public function boot()
{
$this->registerPolicies();
Gate::before(function (User $user) {
if ($user->isSuperAdmin()) {
return true; // This is ignored
}
});
Gate::define('some.permission', function (User $user) {
// return true; // This didn't work as well
return $user->hasPermission('some.permission');
});
}
Забавно, но Gate::before()
игнорируется $this->authorize()
, что логически неверно.