Как сделать операцию ИЛИ для промежуточного программного обеспечения в laravel - PullRequest
0 голосов
/ 13 февраля 2019
Laravel 5.7
PHP 7.2.10

Например, мой маршрут

Route::middleware('auth', 'emailVerified', 'phoneVerified', 'flatTenant|flatResident|flatMember')->get('apartments/{apartment}/flats/{flat}/guests/{guest}', 'Api\GuestController@show')->name('Api.guests.show');

Я хочу, чтобы он работал как любой из flatTenant, flatResident и flatMember, это должно разрешить запрос, каков наилучший способ добиться этого?

1 Ответ

0 голосов
/ 13 февраля 2019

Вам не нужно делать или работать внутри маршрута.Вместо этого вы можете сделать свою собственную аутентификацию, которая будет проверять, является ли текущий пользователь любым из flatTenant, flatResident и flatMember.

Например, вы можете зарегистрировать промежуточное программное обеспечение с именем flatChecker.

Тогда внутри этого промежуточного программного обеспечения ваш код может выглядеть примерно так:

public function handle($request, Closure $next)
    {
        if (Auth::user()->isFlatTenant || Auth::user()->isFlatResident || Auth::user()->isFlatMember) //put your own condition to check  here
        {
            return $next($request);
        }

        return redirect('/home'); //if they are not, then redirect them to somewhere else
    }

Для получения дополнительной информации о промежуточном программном обеспечении проверьте эту документацию .

...