Laravel 5.8 использует промежуточное ПО для 1 пользовательского типа в API и приложениях - PullRequest
2 голосов
/ 02 мая 2019

Я пытаюсь реализовать промежуточное программное обеспечение в Laravel 5.8, которое проверяет, является ли значение истинным для модели Customer.Я хочу, чтобы маршруты приложения перенаправлялись на маршрут ('login'), для маршрутов API я хочу дать ответ 401.Я думаю, что что-то наблюдаю.

Это мое промежуточное ПО, которое работает для маршрутов приложений, но я не могу заставить промежуточное ПО правильно обрабатывать неавторизованные запросы ($user['dropshipping'] === false) ..

public function handle($request, Closure $next)
{
    $user = Auth::user();

    if($user instanceof Customer) {
        if ($user->guard(['web'])['dropshipping']) {
            return $next($request);
        } elseif($user->guard(['customer-api'])['dropshipping']) {
            return $next($request);
        } else {
            return redirect(route('login'))->with('error', 'Account not activated, please contact TWM BV.');
        }
    } else {
        return $next($request);
    }
}

1 Ответ

1 голос
/ 02 мая 2019

Охранники связаны с аутентификацией, а не с пользователями.

Так что вы можете использовать Auth::guard('guard-name') или auth()->guard('guard')

public function handle($request, Closure $next)
{
    $user = Auth::user();

    if($user instanceof Customer) {
        if (auth()->guard('web')->user()->dropshipping) {
            return $next($request);
        } elseif(auth()->guard('customer-api')->user()->dropshipping) {
            return $next($request);
        } else {
            return redirect(route('login'))->with('error', 'Account not activated, please contact TWM BV.');
        }
    } else {
        return $next($request);
    }
}
...