Skip to content

Commit f85a489

Browse files
authored
♻️ refactor user_management module
2 parents 2291bda + 8ea4f4b commit f85a489

File tree

16 files changed

+2967
-865
lines changed

16 files changed

+2967
-865
lines changed
Lines changed: 106 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import logging
22
from datetime import datetime, timedelta
33

4-
from fastapi import APIRouter, Request
4+
from fastapi import APIRouter, Request, HTTPException
5+
from fastapi.responses import JSONResponse
6+
from http import HTTPStatus
57

68
from consts.const import DEFAULT_USER_ID
7-
from consts.model import ServiceResponse, STATUS_CODES, UserSignInRequest, UserSignUpRequest
9+
from consts.model import UserSignInRequest, UserSignUpRequest
810

911
logger = logging.getLogger("mock_user_management_app")
1012
router = APIRouter(prefix="/user", tags=["user"])
@@ -24,31 +26,35 @@
2426
}
2527

2628

27-
@router.get("/service_health", response_model=ServiceResponse)
29+
@router.get("/service_health")
2830
async def service_health():
2931
"""
3032
Mock service health check endpoint
3133
"""
32-
return ServiceResponse(
33-
code=STATUS_CODES["SUCCESS"],
34-
message="Mock user service is healthy",
35-
data=True
36-
)
34+
try:
35+
return JSONResponse(status_code=HTTPStatus.OK, content={"message": "Auth service is available"})
36+
except Exception as e:
37+
logger.error(f"Service health check failed: {str(e)}")
38+
raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
39+
detail="Service health check failed")
3740

3841

39-
@router.post("/signup", response_model=ServiceResponse)
42+
@router.post("/signup")
4043
async def signup(request: UserSignUpRequest):
4144
"""
4245
Mock user registration endpoint
4346
"""
44-
logger.info(
45-
f"Mock signup request: email={request.email}, is_admin={request.is_admin}")
46-
47-
# Return mock success response
48-
return ServiceResponse(
49-
code=STATUS_CODES["SUCCESS"],
50-
message="🎉 Mock user account registered successfully!",
51-
data={
47+
try:
48+
logger.info(
49+
f"Mock signup request: email={request.email}, is_admin={request.is_admin}")
50+
51+
# Mock success response matching user_management_app.py format
52+
if request.is_admin:
53+
success_message = "🎉 Admin account registered successfully! You now have system management permissions."
54+
else:
55+
success_message = "🎉 User account registered successfully! Please start experiencing the AI assistant service."
56+
57+
user_data = {
5258
"user": {
5359
"id": MOCK_USER["id"],
5460
"email": request.email,
@@ -62,119 +68,125 @@ async def signup(request: UserSignUpRequest):
6268
},
6369
"registration_type": "admin" if request.is_admin else "user"
6470
}
65-
)
71+
72+
return JSONResponse(status_code=HTTPStatus.OK,
73+
content={"message": success_message, "data": user_data})
74+
except Exception as e:
75+
logger.error(f"User signup failed: {str(e)}")
76+
raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
77+
detail="User registration failed")
6678

6779

68-
@router.post("/signin", response_model=ServiceResponse)
80+
@router.post("/signin")
6981
async def signin(request: UserSignInRequest):
7082
"""
7183
Mock user login endpoint
7284
"""
73-
logger.info(f"Mock signin request: email={request.email}")
74-
75-
# Return mock success response
76-
return ServiceResponse(
77-
code=STATUS_CODES["SUCCESS"],
78-
message="Login successful, session validity is 10 years",
79-
data={
80-
"user": {
81-
"id": MOCK_USER["id"],
82-
"email": request.email,
83-
"role": MOCK_USER["role"]
84-
},
85-
"session": {
86-
"access_token": MOCK_SESSION["access_token"],
87-
"refresh_token": MOCK_SESSION["refresh_token"],
88-
"expires_at": MOCK_SESSION["expires_at"],
89-
"expires_in_seconds": MOCK_SESSION["expires_in_seconds"]
85+
try:
86+
logger.info(f"Mock signin request: email={request.email}")
87+
88+
# Mock success response matching user_management_app.py format
89+
signin_content = {
90+
"message": "Login successful, session validity is 10 years",
91+
"data": {
92+
"user": {
93+
"id": MOCK_USER["id"],
94+
"email": request.email,
95+
"role": MOCK_USER["role"]
96+
},
97+
"session": {
98+
"access_token": MOCK_SESSION["access_token"],
99+
"refresh_token": MOCK_SESSION["refresh_token"],
100+
"expires_at": MOCK_SESSION["expires_at"],
101+
"expires_in_seconds": MOCK_SESSION["expires_in_seconds"]
102+
}
90103
}
91104
}
92-
)
105+
106+
return JSONResponse(status_code=HTTPStatus.OK, content=signin_content)
107+
except Exception as e:
108+
logger.error(f"User signin failed: {str(e)}")
109+
raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
110+
detail="User login failed")
93111

94112

95-
@router.post("/refresh_token", response_model=ServiceResponse)
96-
async def refresh_token(request: Request):
113+
@router.post("/refresh_token")
114+
async def user_refresh_token(request: Request):
97115
"""
98116
Mock token refresh endpoint
99117
"""
100-
logger.info("Mock refresh token request")
101-
102-
# In speed/mock mode, extend for a very long time (10 years)
103-
new_expires_at = int((datetime.now() + timedelta(days=3650)).timestamp())
104-
105-
return ServiceResponse(
106-
code=STATUS_CODES["SUCCESS"],
107-
message="Token refreshed successfully",
108-
data={
109-
"session": {
110-
"access_token": f"mock_access_token_{new_expires_at}",
111-
"refresh_token": f"mock_refresh_token_{new_expires_at}",
112-
"expires_at": new_expires_at,
113-
"expires_in_seconds": 315360000
114-
}
118+
try:
119+
logger.info("Mock refresh token request")
120+
121+
# In speed/mock mode, extend for a very long time (10 years)
122+
new_expires_at = int((datetime.now() + timedelta(days=3650)).timestamp())
123+
124+
session_info = {
125+
"access_token": f"mock_access_token_{new_expires_at}",
126+
"refresh_token": f"mock_refresh_token_{new_expires_at}",
127+
"expires_at": new_expires_at,
128+
"expires_in_seconds": 315360000
115129
}
116-
)
130+
131+
return JSONResponse(status_code=HTTPStatus.OK,
132+
content={"message": "Token refresh successful", "data": {"session": session_info}})
133+
except Exception as e:
134+
logger.error(f"Token refresh failed: {str(e)}")
135+
raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
136+
detail="Token refresh failed")
117137

118138

119-
@router.post("/logout", response_model=ServiceResponse)
139+
@router.post("/logout")
120140
async def logout(request: Request):
121141
"""
122142
Mock user logout endpoint
123143
"""
124-
logger.info("Mock logout request")
144+
try:
145+
logger.info("Mock logout request")
125146

126-
return ServiceResponse(
127-
code=STATUS_CODES["SUCCESS"],
128-
message="Logout successful",
129-
data=None
130-
)
147+
return JSONResponse(status_code=HTTPStatus.OK,
148+
content={"message": "Logout successful"})
149+
except Exception as e:
150+
logger.error(f"User logout failed: {str(e)}")
151+
raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
152+
detail="User logout failed")
131153

132154

133-
@router.get("/session", response_model=ServiceResponse)
155+
@router.get("/session")
134156
async def get_session(request: Request):
135157
"""
136158
Mock session validation endpoint
137159
"""
138-
authorization = request.headers.get("Authorization")
139-
140-
if not authorization:
141-
return ServiceResponse(
142-
code=STATUS_CODES["UNAUTHORIZED"],
143-
message="No authorization token provided",
144-
data=None
145-
)
146-
147-
# In mock mode, always return valid session
148-
return ServiceResponse(
149-
code=STATUS_CODES["SUCCESS"],
150-
message="Session is valid",
151-
data={
160+
try:
161+
# In mock mode, always return valid session
162+
data = {
152163
"user": {
153164
"id": MOCK_USER["id"],
154165
"email": MOCK_USER["email"],
155166
"role": MOCK_USER["role"]
156167
}
157168
}
158-
)
169+
170+
return JSONResponse(status_code=HTTPStatus.OK,
171+
content={"message": "Session is valid",
172+
"data": data})
173+
except Exception as e:
174+
logger.error(f"Session validation failed: {str(e)}")
175+
raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
176+
detail="Session validation failed")
159177

160178

161-
@router.get("/current_user_id", response_model=ServiceResponse)
179+
@router.get("/current_user_id")
162180
async def get_user_id(request: Request):
163181
"""
164182
Mock current user ID endpoint
165183
"""
166-
authorization = request.headers.get("Authorization")
167-
168-
if not authorization:
169-
return ServiceResponse(
170-
code=STATUS_CODES["SUCCESS"],
171-
message="No authorization token provided",
172-
data={"user_id": None}
173-
)
174-
175-
# In mock mode, always return the mock user ID
176-
return ServiceResponse(
177-
code=STATUS_CODES["SUCCESS"],
178-
message="Get user ID successfully",
179-
data={"user_id": MOCK_USER["id"]}
180-
)
184+
try:
185+
# In mock mode, always return the mock user ID
186+
return JSONResponse(status_code=HTTPStatus.OK,
187+
content={"message": "Get user ID successfully",
188+
"data": {"user_id": MOCK_USER["id"]}})
189+
except Exception as e:
190+
logger.error(f"Get user ID failed: {str(e)}")
191+
raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
192+
detail="Failed to get user ID")

0 commit comments

Comments
 (0)