11import logging
22from 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
68from consts .const import DEFAULT_USER_ID
7- from consts .model import ServiceResponse , STATUS_CODES , UserSignInRequest , UserSignUpRequest
9+ from consts .model import UserSignInRequest , UserSignUpRequest
810
911logger = logging .getLogger ("mock_user_management_app" )
1012router = APIRouter (prefix = "/user" , tags = ["user" ])
2426}
2527
2628
27- @router .get ("/service_health" , response_model = ServiceResponse )
29+ @router .get ("/service_health" )
2830async 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" )
4043async 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" )
6981async 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" )
120140async 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" )
134156async 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" )
162180async 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