|
11 | 11 | # -- Server Request and Response Models --
|
12 | 12 |
|
13 | 13 |
|
14 |
| -class UserProfile(BaseModel): |
| 14 | +class UpdateProfile(BaseModel): |
| 15 | + """Request model for updating user profile information""" |
15 | 16 | name: str
|
16 | 17 | email: EmailStr
|
17 | 18 | avatar_url: str
|
@@ -40,41 +41,40 @@ async def as_form(
|
40 | 41 | # -- Routes --
|
41 | 42 |
|
42 | 43 |
|
43 |
| -@router.get("/profile", response_class=RedirectResponse) |
44 |
| -async def view_profile( |
45 |
| - current_user: User = Depends(get_authenticated_user) |
46 |
| -): |
47 |
| - # Render the profile page with the current user's data |
48 |
| - return {"user": current_user} |
49 |
| - |
50 |
| - |
51 |
| -@router.post("/edit_profile", response_class=RedirectResponse) |
52 |
| -async def edit_profile( |
53 |
| - name: str = Form(...), |
54 |
| - email: str = Form(...), |
55 |
| - avatar_url: str = Form(...), |
| 44 | +@router.post("/update_profile", response_class=RedirectResponse) |
| 45 | +async def update_profile( |
| 46 | + user_profile: UpdateProfile = Depends(UpdateProfile.as_form), |
56 | 47 | current_user: User = Depends(get_authenticated_user),
|
57 | 48 | session: Session = Depends(get_session)
|
58 | 49 | ):
|
59 | 50 | # Update user details
|
60 |
| - current_user.name = name |
61 |
| - current_user.email = email |
62 |
| - current_user.avatar_url = avatar_url |
| 51 | + current_user.name = user_profile.name |
| 52 | + current_user.email = user_profile.email |
| 53 | + current_user.avatar_url = user_profile.avatar_url |
63 | 54 | session.commit()
|
64 | 55 | session.refresh(current_user)
|
65 | 56 | return RedirectResponse(url="/profile", status_code=303)
|
66 | 57 |
|
67 | 58 |
|
68 | 59 | @router.post("/delete_account", response_class=RedirectResponse)
|
69 | 60 | async def delete_account(
|
70 |
| - confirm_delete_password: str = Form(...), |
| 61 | + user_delete_account: UserDeleteAccount = Depends( |
| 62 | + UserDeleteAccount.as_form), |
71 | 63 | current_user: User = Depends(get_authenticated_user),
|
72 | 64 | session: Session = Depends(get_session)
|
73 | 65 | ):
|
74 |
| - if not verify_password(confirm_delete_password, current_user.hashed_password): |
75 |
| - raise HTTPException(status_code=400, detail="Password is incorrect") |
| 66 | + if not verify_password( |
| 67 | + user_delete_account.confirm_delete_password, |
| 68 | + current_user.hashed_password |
| 69 | + ): |
| 70 | + raise HTTPException( |
| 71 | + status_code=400, |
| 72 | + detail="Password is incorrect" |
| 73 | + ) |
76 | 74 |
|
77 |
| - # Mark the user as deleted |
78 |
| - current_user.deleted = True |
| 75 | + # Delete the user |
| 76 | + session.delete(current_user) |
79 | 77 | session.commit()
|
80 |
| - return RedirectResponse(url="/", status_code=303) |
| 78 | + |
| 79 | + # Log out the user |
| 80 | + return RedirectResponse(url="/auth/logout", status_code=303) |
0 commit comments