Laravel / Bouncer проверяет владение у ворот - PullRequest
0 голосов
/ 16 мая 2019

Я новичок в баунсере, я хотел бы подтвердить владение с помощью промежуточного программного обеспечения. Закрытие OwnerVia запускается, но даже если я заставлю его вернуть значение false, модель Report возвращается, когда я запрашиваю маршрут. Чего мне не хватает?

AppServiceProvider @ багажник

Bouncer::ownedVia(Report::class, function ($report, $user) {
    Log::info('Closure ran!');
    return $report->hub->user_id === $user->id;
});

Маршрут

Route::get('report/{report}', 'ReportController@get')->middleware('can:view-report,report');

ReportController

public function __construct()
{
    $this->authorizeResource(Report::class);
}

public function get(Report $report)
{
    return new ReportResource($report);
}

UserService

Bouncer::allow($user)->toOwn(Report::class);

Пользователь

class User extends Authenticatable
{
    use Notifiable, HasApiTokens, HasRolesAndAbilities;

1 Ответ

0 голосов
/ 16 мая 2019

Вы уверены, что у пользователя нет другой способности, которая позволяет это?

Попробуйте вместо этого:

  1. Удалите промежуточное ПО из маршрута.

  2. Удалить вызов authorizeResource в конструкторе.

  3. Затем, в верхней части вашего get метода, добавьте это:

    dd(\Gate::authorize('view', $report));
    

Этот должен регистрировать фактическую способность , которая позволила действие.

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