Laravel не может создать политику для пользовательской модели - PullRequest
0 голосов
/ 05 июля 2019

Может 'создать политику для модели пользователя.

Я создал Политику, подобную этой

php artisan make:policy UserPolicy --model=User

Получил UserPolicy.php с действиями CRUD.

Затем внутри AuthServiceProvider.php я добавил

protected $policies = [
        // 'App\Model' => 'App\Policies\ModelPolicy',
        User::class => UserPolicy::class,
    ];

Но ничего не происходит. Как я понимаю, сгенерированная модель Policy for User по умолчанию возвращает false при каждом действии, я даже явно добавил это в класс UserPolicy:

public function create(User $user)
{
    return false;
}

Еще можно создать пользователя.

Позже мне нужно будет проверить, пытается ли пользователь редактировать свой пост или нет. Для пользователей без прав администратора все должно быть запрещено, кроме редактирования собственного профиля (модели).

Я, должно быть, упускаю что-то очевидное.

UPDATE:

Если я поставлю

$this->authorize('create', $user);

В методе создания UsersController он вызывает метод создания политики, поэтому он обнаруживает, что что-то не так с

...
use App\Policies\UserPolicy;
use App\User;
...

protected $policies = [
            // 'App\Model' => 'App\Policies\ModelPolicy',
            User::class => UserPolicy::class,
        ];

внутри AuthServiceProvider.

Ответы [ 2 ]

0 голосов
/ 06 июля 2019

Поместите строки ниже в вашей функции контроллера $ this-> authorizeForUser ($ currentUser, 'create', User :: class)

0 голосов
/ 05 июля 2019

Вы должны поместить это в свою функцию в контроллере. $this->authorize('create',$user)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...