@@ -17,19 +17,22 @@ def create_user(
1717 manager_email : str = Form (None ),
1818 db : Session = Depends (get_db ),
1919):
20- if db .query (User ).filter (User .email == email ).first ():
21- raise HTTPException (status_code = 400 , detail = "Email already exists" )
22- user = User (
23- name = name ,
24- email = email ,
25- hashed_password = bcrypt .hash (password ),
26- department = department ,
27- role = role ,
28- manager_email = manager_email ,
29- )
30- db .add (user )
31- db .commit ()
32- return {"ok" : True , "message" : "User created successfully" }
20+ try :
21+ if db .query (User ).filter (User .email == email ).first ():
22+ raise HTTPException (status_code = 400 , detail = "Email already exists" )
23+ user = User (
24+ name = name ,
25+ email = email ,
26+ hashed_password = bcrypt .hash (password ),
27+ department = department ,
28+ role = role ,
29+ manager_email = manager_email ,
30+ )
31+ db .add (user )
32+ db .commit ()
33+ return {"ok" : True , "message" : "User created successfully" }
34+ except Exception as e :
35+ return {"ok" : False , "error" : str (e )}
3336
3437# ✅ Login route
3538@router .post ("/login" )
@@ -38,49 +41,69 @@ def login_user(
3841 password : str = Form (...),
3942 db : Session = Depends (get_db )
4043):
41- user = db .query (User ).filter (User .email == email ).first ()
42- if not user or not bcrypt .verify (password , user .hashed_password ):
43- raise HTTPException (status_code = 401 , detail = "Invalid email or password" )
44- return {"message" : "Login successful" , "user" : {"id" : user .id , "name" : user .name , "role" : user .role }}
44+ try :
45+ user = db .query (User ).filter (User .email == email ).first ()
46+ if not user or not bcrypt .verify (password , user .hashed_password ):
47+ raise HTTPException (status_code = 401 , detail = "Invalid email or password" )
48+ return {
49+ "ok" : True ,
50+ "message" : "Login successful" ,
51+ "user" : {"id" : user .id , "name" : user .name , "role" : user .role },
52+ }
53+ except Exception as e :
54+ return {"ok" : False , "error" : str (e )}
4555
4656# ✅ Get all users
4757@router .get ("/" )
4858def list_users (db : Session = Depends (get_db )):
49- return db .query (User ).all ()
59+ try :
60+ return db .query (User ).all ()
61+ except Exception as e :
62+ return {"ok" : False , "error" : str (e )}
5063
5164# ✅ Delete user
5265@router .delete ("/{user_id}" )
5366def delete_user (user_id : int , db : Session = Depends (get_db )):
54- user = db .get (User , user_id )
55- if not user :
56- raise HTTPException (status_code = 404 , detail = "User not found" )
57- db .delete (user )
58- db .commit ()
59- return {"ok" : True , "message" : "User deleted" }
67+ try :
68+ user = db .get (User , user_id )
69+ if not user :
70+ raise HTTPException (status_code = 404 , detail = "User not found" )
71+ db .delete (user )
72+ db .commit ()
73+ return {"ok" : True , "message" : "User deleted" }
74+ except Exception as e :
75+ return {"ok" : False , "error" : str (e )}
76+
77+ # ✅ Check Admin Users
6078@router .get ("/check-admin" )
6179def check_admin (db : Session = Depends (get_db )):
62- users = db .query (User ).all ()
63- return {"count" : len (users ), "users" : [u .email for u in users ]}
64- # ✅ Seed Admin User (one-time setup)
80+ try :
81+ users = db .query (User ).all ()
82+ return {"count" : len (users ), "users" : [u .email for u in users ]}
83+ except Exception as e :
84+ return {"ok" : False , "error" : str (e )}
85+
86+ # ✅ Seed Admin User (One-Time Setup)
6587@router .post ("/seed-admin" )
6688def seed_admin (db : Session = Depends (get_db )):
67- from passlib .hash import bcrypt
68-
69- 70- existing = db .query (User ).filter (User .email == email ).first ()
71- if existing :
72- return {"ok" : True , "note" : "Admin already exists" }
89+ try :
90+ 91+ existing = db .query (User ).filter (User .email == email ).first ()
92+ if existing :
93+ return {"ok" : True , "note" : "Admin already exists" }
7394
74- admin = User (
75- name = "Admin" ,
76- email = email ,
77- hashed_password = bcrypt .hash ("Edme@123" ),
78- department = "Finance" ,
79- role = "admin" ,
80- manager_email = None ,
81- )
82- db .add (admin )
83- db .commit ()
84- return {"ok" : True , "note" : "Admin created" }
95+ admin = User (
96+ name = "Admin" ,
97+ email = email ,
98+ hashed_password = bcrypt .hash ("Edme@123" ),
99+ department = "Finance" ,
100+ role = "admin" ,
101+ manager_email = None ,
102+ )
103+ db .add (admin )
104+ db .commit ()
105+ return {"ok" : True , "note" : "Admin created" }
106+ except Exception as e :
107+ return {"ok" : False , "error" : str (e )}
85108
86109
0 commit comments