validated(); $result = $this->authService->login( email: $validated["email"], password: $validated["password"], ); if (!$result) { return $this->errorResponse(message: __("auth.failed"), code: 401); } return $this->successResponse( payload: new AuthResource($result["payload"]), message: __("auth.logged_in"), )->withCookie( cookie( "refresh_token", $result["refreshToken"], config("sanctum.rt_expiration") * 60, "/", config("session.domain"), config("session.secure"), true, false, "Lax", ), ); } public function loginApp(AuthRequest $request): JsonResponse { $validated = $request->validated(); $result = $this->authService->login( email: $validated["email"], password: $validated["password"], ); if (!$result) { return $this->errorResponse(message: __("auth.failed"), code: 401); } return $this->successResponse( payload: new AuthResource([ ...$result["payload"], "refresh_token" => $result["refreshToken"], ]), message: __("auth.logged_in"), ); } public function logout(): JsonResponse { $this->authService->logout(); return $this->successResponse( message: __("auth.logout"), )->withoutCookie("refresh_token"); } public function refresh(RefreshTokenRequest $request): JsonResponse { $refresh_token = $request->cookie("refresh_token"); if (is_null($refresh_token)) { return $this->errorResponse( code: 403, )->withoutCookie("refresh_token"); } $result = $this->authService->refresh( $refresh_token ); if (is_null($result)) { return $this->errorResponse( message: __("auth.unauthorized"), code: 403, )->withoutCookie("refresh_token"); } return $this->successResponse( payload: new AuthResource($result["payload"]), )->withCookie( cookie( "refresh_token", $result["refreshToken"], config("sanctum.rt_expiration") * 60, "/", config("session.domain"), config("session.secure"), true, true, "Lax", ), ); } public function refreshApp(RefreshTokenAppRequest $request): JsonResponse { $refresh_token = $request->validated("refresh_token"); if (is_null($refresh_token)) { return $this->errorResponse(code: 403); } $result = $this->authService->refresh( $refresh_token ); if (is_null($result)) { return $this->errorResponse( message: __("auth.unauthorized"), code: 403, ); } return $this->successResponse( payload: new AuthResource([ ...$result["payload"], "refresh_token" => $result["refreshToken"], ]), ); } public function sendCode(UserAppsRequest $request): JsonResponse { $isLogin = $this->authService->sendCode($request->validated()); return $this->successResponse( message: __("messages.code_sent"), code: 201, payload: ['isLogin' => $isLogin], ); } public function validateCode(UserAppsValidateCodeRequest $request): JsonResponse { try { $email = $request->input("email"); $phone = $request->input("phone"); $code = $request->input("code"); $isLogin = $request->input("isLogin"); $result = $this->authService->validateCode($request->validated(), $isLogin); if (!$result) { return $this->errorResponse( message: __("auth.invalid_code"), code: 400, ); } if($isLogin) { return $this->successResponse( payload: new AuthResource([ ...$result["payload"], "refresh_token" => $result["refreshToken"], ]), message: __("auth.logged_in"), ); } else { return $this->successResponse( payload: ['email' => $email, 'phone' => $phone, 'code' => $code], message: __("auth.valid_code"), code: 200, ); } } catch (\Exception $e) { return $this->errorResponse( message: __("auth.validation_error"), code: 500, ); } } }