Skip to content

Commit 2d5b73b

Browse files
author
Uttam Singh
committed
Improve seed-admin and add error debug
1 parent 5b4e586 commit 2d5b73b

File tree

1 file changed

+67
-44
lines changed

1 file changed

+67
-44
lines changed

backend/app/routers/users.py

Lines changed: 67 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -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("/")
4858
def 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}")
5366
def 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")
6179
def 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")
6688
def 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

Comments
 (0)