feat: profile image update backend

This commit is contained in:
Timothy J. Baek 2024-01-26 20:27:45 -08:00
parent 0e831f4cf7
commit 418da74756
3 changed files with 52 additions and 11 deletions

View file

@ -63,6 +63,10 @@ class SigninForm(BaseModel):
password: str password: str
class ProfileImageUrlForm(BaseModel):
profile_image_url: str
class UpdatePasswordForm(BaseModel): class UpdatePasswordForm(BaseModel):
password: str password: str
new_password: str new_password: str

View file

@ -108,6 +108,20 @@ class UsersTable:
except: except:
return None return None
def update_user_profile_image_url_by_id(
self, id: str, profile_image_url: str
) -> Optional[UserModel]:
try:
query = User.update(profile_image_url=profile_image_url).where(
User.id == id
)
query.execute()
user = User.get(User.id == id)
return UserModel(**model_to_dict(user))
except:
return None
def update_user_by_id(self, id: str, updated: dict) -> Optional[UserModel]: def update_user_by_id(self, id: str, updated: dict) -> Optional[UserModel]:
try: try:
query = User.update(**updated).where(User.id == id) query = User.update(**updated).where(User.id == id)

View file

@ -11,6 +11,7 @@ import uuid
from apps.web.models.auths import ( from apps.web.models.auths import (
SigninForm, SigninForm,
SignupForm, SignupForm,
ProfileImageUrlForm,
UpdatePasswordForm, UpdatePasswordForm,
UserResponse, UserResponse,
SigninResponse, SigninResponse,
@ -40,14 +41,36 @@ async def get_session_user(user=Depends(get_current_user)):
} }
############################
# Update Profile Image Url
############################
@router.post("/update/profile", response_model=UserResponse)
async def update_profile_image_url(
form_data: ProfileImageUrlForm, session_user=Depends(get_current_user)
):
if session_user:
user = Users.update_user_profile_image_url_by_id(
session_user.id, form_data.profile_image_url
)
if user:
return user
else:
raise HTTPException(400, detail=ERROR_MESSAGES.DEFAULT())
else:
raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_CRED)
############################ ############################
# Update Password # Update Password
############################ ############################
@router.post("/update/password", response_model=bool) @router.post("/update/password", response_model=bool)
async def update_password(form_data: UpdatePasswordForm, async def update_password(
session_user=Depends(get_current_user)): form_data: UpdatePasswordForm, session_user=Depends(get_current_user)
):
if session_user: if session_user:
user = Auths.authenticate_user(session_user.email, form_data.password) user = Auths.authenticate_user(session_user.email, form_data.password)
@ -103,8 +126,9 @@ async def signup(request: Request, form_data: SignupForm):
try: try:
role = "admin" if Users.get_num_users() == 0 else "pending" role = "admin" if Users.get_num_users() == 0 else "pending"
hashed = get_password_hash(form_data.password) hashed = get_password_hash(form_data.password)
user = Auths.insert_new_auth(form_data.email.lower(), user = Auths.insert_new_auth(
hashed, form_data.name, role) form_data.email.lower(), hashed, form_data.name, role
)
if user: if user:
token = create_token(data={"email": user.email}) token = create_token(data={"email": user.email})
@ -120,11 +144,10 @@ async def signup(request: Request, form_data: SignupForm):
"profile_image_url": user.profile_image_url, "profile_image_url": user.profile_image_url,
} }
else: else:
raise HTTPException( raise HTTPException(500, detail=ERROR_MESSAGES.CREATE_USER_ERROR)
500, detail=ERROR_MESSAGES.CREATE_USER_ERROR)
except Exception as err: except Exception as err:
raise HTTPException(500, raise HTTPException(500, detail=ERROR_MESSAGES.DEFAULT(err))
detail=ERROR_MESSAGES.DEFAULT(err))
############################ ############################
# ToggleSignUp # ToggleSignUp