AuthController.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace App\Http\Controllers\API;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\API\User\LoginRequest;
  5. use App\Models\User;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\Auth;
  8. use Illuminate\Support\Facades\Hash;
  9. use Illuminate\Validation\ValidationException;
  10. use Laravel\Sanctum\PersonalAccessToken;
  11. class AuthController extends Controller
  12. {
  13. public function login(LoginRequest $request)
  14. {
  15. $user = User::query()
  16. ->where("username", $request->username)
  17. ->orWhere("email", $request->username)
  18. ->first();
  19. if (! $user || ! Hash::check($request->password, $user->password)) {
  20. throw ValidationException::withMessages([
  21. 'username' => [__("auth.failed")],
  22. ]);
  23. }
  24. return $this->success([
  25. 'data' => [
  26. 'token' => $user->createToken('user')->plainTextToken,
  27. ]
  28. ]);
  29. }
  30. public function logout()
  31. {
  32. Auth::user()->currentAccessToken()->delete();
  33. return $this->noContent();
  34. }
  35. }