AuthController.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. if ($user->status===0){
  25. throw ValidationException::withMessages([
  26. 'username' => [__("auth.ban")],
  27. ]);
  28. }
  29. return $this->success([
  30. 'data' => [
  31. 'token' => $user->createToken('user')->plainTextToken,
  32. ]
  33. ]);
  34. }
  35. public function logout()
  36. {
  37. Auth::user()->currentAccessToken()->delete();
  38. return $this->noContent();
  39. }
  40. }