anka2002
@anka2002

Как заставить вендорный middleware выполняться до выполнения собственного класса Request?

Итак, создаю я класс Request artisan-командой make:request для того, чтобы выполнять валидацию данных запроса внутри него. Из документации ясно, что внутри созданного таким образом класса запроса имеется метод authorize, переопределив тело которого, можно сделать предварительные булевы проверки, связанные с авторизацией.
class SuggestionRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return $this->user() && $this->user()->hasRole('sales manager');
//        return true;
    }
}

Так я и решила поступить изначально за тем, чтобы проверка на авторизованного пользователя и его роль выполнялась до проверок валидации данных Request, НО к роуту прикреплен сторонний middleware auth:sanctum
Route::post('/suggest', [SuggestionController::class, 'store'])
    ->middleware('auth:sanctum');

и, получается, что теперь они вместе выполняют схожую работу, но в разные моменты времени. Так, тесты дают понять, что последовательность проверок выстроена следующим образом:
1) в authorize методе (класс Request)
2) валидация данных (внутри этого же класса)
3) те же проверки, что и в 1-м пункте, только на уровне ответственности стороннего middleware (в моём случае auth:sanctum).
==
Мне хотелось бы, чтобы проверка внутри стороннего middleware выполнялась ДО валидации класса Request (2-й пункт).
Пожалуйста, прошу подсказать возможные варианты того, как можно было бы поступить в моём случае) в частности, как следовало бы рефакторить, если нужно.
==
Так же на вооружение взяла beforeMiddleware из доки, но оно ведь имеет смысл только с кастомными посредниками..?
  • Вопрос задан
  • 117 просмотров
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект