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
class ProfileImageUrlForm(BaseModel):
profile_image_url: str
class UpdatePasswordForm(BaseModel):
password: str
new_password: str

View file

@ -108,6 +108,20 @@ class UsersTable:
except:
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]:
try:
query = User.update(**updated).where(User.id == id)

View file

@ -11,6 +11,7 @@ import uuid
from apps.web.models.auths import (
SigninForm,
SignupForm,
ProfileImageUrlForm,
UpdatePasswordForm,
UserResponse,
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
############################
@router.post("/update/password", response_model=bool)
async def update_password(form_data: UpdatePasswordForm,
session_user=Depends(get_current_user)):
async def update_password(
form_data: UpdatePasswordForm, session_user=Depends(get_current_user)
):
if session_user:
user = Auths.authenticate_user(session_user.email, form_data.password)
@ -93,18 +116,19 @@ async def signin(form_data: SigninForm):
async def signup(request: Request, form_data: SignupForm):
if not request.app.state.ENABLE_SIGNUP:
raise HTTPException(400, detail=ERROR_MESSAGES.ACCESS_PROHIBITED)
if not validate_email_format(form_data.email.lower()):
raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_EMAIL_FORMAT)
if Users.get_user_by_email(form_data.email.lower()):
raise HTTPException(400, detail=ERROR_MESSAGES.EMAIL_TAKEN)
try:
role = "admin" if Users.get_num_users() == 0 else "pending"
hashed = get_password_hash(form_data.password)
user = Auths.insert_new_auth(form_data.email.lower(),
hashed, form_data.name, role)
user = Auths.insert_new_auth(
form_data.email.lower(), hashed, form_data.name, role
)
if user:
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,
}
else:
raise HTTPException(
500, detail=ERROR_MESSAGES.CREATE_USER_ERROR)
raise HTTPException(500, detail=ERROR_MESSAGES.CREATE_USER_ERROR)
except Exception as err:
raise HTTPException(500,
detail=ERROR_MESSAGES.DEFAULT(err))
raise HTTPException(500, detail=ERROR_MESSAGES.DEFAULT(err))
############################
# ToggleSignUp