validated(); $user = User::query() ->where('email', $credentials['email']) ->first(); if (! $user || ! Hash::check($credentials['password'], $user->password)) { throw ValidationException::withMessages([ 'email' => __('auth.failed'), ]); } $token = $user->createToken('quasar-app')->accessToken; return response()->json([ 'token' => $token, 'tokenType' => 'Bearer', 'user' => [ 'id' => (string) $user->id, 'name' => $user->name, 'email' => $user->email, 'avatar' => $this->avatarFor($user), 'mode' => 'remote', ], ]); } public function logout(Request $request): JsonResponse { $request->user()?->token()?->revoke(); return response()->json(null, 204); } private function avatarFor(User $user): string { return substr(strtoupper($user->initials()), 0, 3); } }