Как в Laravel в методе unauthenticated писать свою ошибку?

В Laravel метод unauthenticated вызывается, когда пользователь пытается получить доступ к защищенному маршруту без аутентификации. Изначально, при вызове этого метода, Laravel возвращает JSON-ответ с сообщением об ошибке "Unauthenticated." и кодом состояния 401.

Однако, вы можете изменить это поведение и использовать свое собственное сообщение об ошибке. Для этого вам нужно переопределить метод unauthenticated в вашем классе app/Exceptions/Handler.php.

Вот пример реализации:

use IlluminateAuthAuthenticationException;
use IlluminateFoundationExceptionsHandler as ExceptionHandler;

class Handler extends ExceptionHandler
{
    // ...

    protected function unauthenticated($request, AuthenticationException $exception)
    {
        // Проверяем тип запроса (web или api)
        if ($request->expectsJson()) {
            return response()->json(['error' => 'Custom unauthenticated message'], 401);
        } else {
            return redirect()->guest('login');
        }
    }

    // ...
}

В данном примере мы проверяем тип запроса, используя метод $request->expectsJson(). Если тип запроса - JSON, мы возвращаем JSON-ответ с нашим собственным сообщением об ошибке и кодом состояния 401. В противном случае, если тип запроса - не JSON, мы перенаправляем пользователя на страницу логина.

Вы можете изменить 'Custom unauthenticated message' на любое сообщение об ошибке, которое хотите отображать при отсутствии аутентификации.

После внесения изменений в класс Handler.php, Laravel будет использовать вашу кастомную ошибку unauthenticated, когда пользователь пытается получить доступ к защищенному маршруту без аутентификации.