Как аутентифицировать пользователя правильно при помощи sanctum?

Для аутентификации пользователя с использованием Laravel Sanctum, вам потребуется следовать нескольким простым шагам.

1. Установка Laravel Sanctum
Установите Laravel Sanctum, выполнив следующую команду в терминале вашего проекта:

   composer require laravel/sanctum

2. Настройка маршрутов API
В файле routes/api.php добавьте маршруты, необходимые для аутентификации:

   use LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful;
   
   Route::middleware([EnsureFrontendRequestsAreStateful::class])->group(function () {
       // Ваши маршруты API
   });

3. Настройка аутентификации
В файле app/Providers/EventServiceProvider.php добавьте следующие строки кода:

   use IlluminateSupportFacadesEvent;
   use IlluminateAuthEventsRegistered;
   use LaravelSanctumEventsAccessTokenCreated;
   
   protected $listen = [
       Registered::class => [
           // Ваши слушатели событий
       ],
       AccessTokenCreated::class => [
           // Ваши слушатели событий
       ],
   ];

Далее, в файле app/Providers/AuthServiceProvider.php, в методе boot, добавьте следующий контроль доступа:

   use LaravelSanctumSanctum;
   
   public function boot()
   {
       $this->registerPolicies();
   
       Sanctum::allowCookieSessions();
   
       Sanctum::allowTokenCan('role:admin'); // Настройка разрешений для пользователя с определенной ролью
   }

4. Создание аутентификационного токена
Теперь вы можете создать токен для аутентификации пользователя на основе его учетных данных. Ваш контроллер или маршрут может выглядеть примерно так:

   use IlluminateHttpRequest;
   use IlluminateSupportFacadesAuth;
   use LaravelSanctumEventsAccessTokenCreated;
   
   public function createToken(Request $request)
   {
       $credentials = $request->only('email', 'password');
   
       if (Auth::attempt($credentials)) {
           event(new AccessTokenCreated(Auth::user()));
   
           return response()->json(['token' => $request->user()->currentAccessToken()]);
       }
   
       return response()->json(['message' => 'Аутентификация не удалась'], 401);
   }

После успешной аутентификации пользователь будет иметь доступ к токену аутентификации, который может быть использован для прохождения аутентификации на вашем API.

5. Защита маршрутов
Чтобы защитить маршруты, чтобы они были доступны только аутентифицированным пользователям, используйте мидлваре Sanctum:

   use LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful;
   
   Route::middleware([EnsureFrontendRequestsAreStateful::class, 'auth:sanctum'])->group(function () {
       // Ваши защищенные маршруты
   });

Теперь только аутентифицированные пользователи с действующим токеном Sanctum смогут получить доступ к вашим защищенным маршрутам.

Это основные шаги для правильной аутентификации пользователя с помощью Laravel Sanctum. Однако вам также следует ознакомиться с документацией Laravel Sanctum для получения более подробных сведений о его использовании и возможностях.