11from starlette .responses import RedirectResponse
22from fastapi import Request , Response , APIRouter
3- import os , requests
4- import logging
3+ import os
4+ import requests
55from sqlalchemy .exc import SQLAlchemyError
66from sqlmodel import select
77from app .db import User , get_session
8- from datetime import datetime
9-
10- # Configure logging
11- logging .basicConfig (level = logging .INFO )
12- logger = logging .getLogger (__name__ )
8+ from app .services .logger import app_logger
139
1410router = APIRouter ()
1511
1612
1713@router .get ("/auth" , tags = ["auth" ])
18- async def auth_me ():
14+ async def auth_redirect ():
1915 """
2016 Redirect for OIDC authentication.
2117 """
@@ -74,7 +70,7 @@ async def auth_callback(code: str):
7470 if db_user and db_user .archived == 1 :
7571 # User is archived, do not log in
7672 return RedirectResponse (url = "/?alert=archived_user" )
77- except Exception as e :
73+ except Exception :
7874 # Optionally handle DB errors
7975 return RedirectResponse (url = "/?alert=database_error" )
8076
@@ -128,7 +124,7 @@ async def auth_me(request: Request, response: Response):
128124 timeout = 2 ,
129125 )
130126 except requests .exceptions .RequestException as e :
131- logger . error (f"Failed to fetch user info: { e } " )
127+ app_logger . exception (f"Failed to fetch user info. Clearing access token cookie! " )
132128 response .delete_cookie ("access_token" )
133129 return {
134130 "status" : "failure" ,
@@ -138,7 +134,7 @@ async def auth_me(request: Request, response: Response):
138134
139135 if user_info_response .status_code == 200 :
140136 try :
141- logger .info ("User info response received successfully" )
137+ # app_logger .info("User info response received successfully")
142138 user_info = user_info_response .json ()
143139
144140 # Get user authorization details from database using the email
@@ -149,32 +145,28 @@ async def auth_me(request: Request, response: Response):
149145
150146 if "email" in user_info :
151147 email = user_info ["email" ]
152- logger .info (f"Looking up user authorization for email: { email } " )
153-
148+ # app_logger.info(f"Looking up user email: {email}")
154149 try :
155150 with get_session () as session :
156151 if session is None :
157152 db_status = "warning"
158153 db_message = "Database connection unavailable"
159- logger .warning ("Database session is None, skipping user lookup" )
154+ app_logger .warning ("Database session is None, skipping user lookup" )
160155 else :
161156 try :
162- logger .info ("Querying user_details table for existing user" )
163157 statement = select (User ).where (User .email == email )
164158 db_user = session .exec (statement ).first ()
165-
166159 if db_user :
167- logger .info (f"Found existing user in database: { db_user .id } " )
168-
160+ # app_logger.info(f"Found existing user with id '{db_user.id}'")
169161 if db_user .archived == 1 :
170- logger .info (
162+ app_logger .info (
171163 f"User with email '{ db_user .email } ' is archived. Cannot authenticate them!"
172164 )
173165 response .delete_cookie ("access_token" )
174166 return {
175167 "status" : "failure" ,
176168 "message" : "User is archived. Login prevented!" ,
177- "details" : str ( e ) ,
169+ "details" : "User is archived. Please contact supcrt@iu.edu for support" ,
178170 }
179171
180172 # Convert SQLModel to dict and add to response
@@ -192,7 +184,7 @@ async def auth_me(request: Request, response: Response):
192184 "onboarded" : db_user .onboarded ,
193185 }
194186 else :
195- logger .info (f"User { email } not found, creating minimal user entry" )
187+ # app_logger .info(f"User {email} not found, creating minimal user entry")
196188
197189 # Get name components from CILogon data if available
198190 name = user_info .get ("name" , "" )
@@ -216,7 +208,7 @@ async def auth_me(request: Request, response: Response):
216208 session .commit ()
217209 # Refresh to get the assigned ID
218210 session .refresh (new_user )
219- logger .info (f"Created new user with ID: { new_user .id } " )
211+ # app_logger .info(f"Created new user with ID: {new_user.id}")
220212
221213 # Set flag for new user creation
222214 is_new_user = True
@@ -238,17 +230,17 @@ async def auth_me(request: Request, response: Response):
238230
239231 db_message = "New user created successfully"
240232 except SQLAlchemyError as add_error :
241- logger . error (f"Failed to create new user: { add_error } " )
233+ app_logger . exception (f"Failed to create new user: { add_error } " )
242234 db_status = "error"
243235 db_message = f"Failed to create new user: { str (add_error )} "
244236 except Exception as table_error :
245237 db_status = "error"
246238 db_message = f"Error querying user_details table: { str (table_error )} "
247- logger . error (db_message )
239+ app_logger . exception (db_message )
248240 except SQLAlchemyError as db_error :
249241 db_status = "error"
250242 db_message = f"Database connection error: { str (db_error )} "
251- logger . error (db_message )
243+ app_logger . exception (db_message )
252244
253245 return {
254246 "status" : "success" ,
@@ -261,15 +253,15 @@ async def auth_me(request: Request, response: Response):
261253 "access_token" : access_token ,
262254 }
263255 except requests .exceptions .JSONDecodeError :
264- logger . error ("Failed to decode user info response as JSON" )
256+ app_logger . exception ("Failed to decode user info response as JSON" )
265257 response .delete_cookie ("access_token" )
266258 return {
267259 "status" : "failure" ,
268260 "message" : "Failed to decode user info response as JSON" ,
269261 "details" : user_info_response .text ,
270262 }
271263 else :
272- logger . error (f"Failed to fetch user info: { user_info_response .status_code } " )
264+ app_logger . exception (f"Failed to fetch user info: { user_info_response .status_code } " )
273265 response .delete_cookie ("access_token" )
274266 return {
275267 "status" : "failure" ,
0 commit comments