forked from open-webui/open-webui
		
	feat: profile image update backend
This commit is contained in:
		
							parent
							
								
									0e831f4cf7
								
							
						
					
					
						commit
						418da74756
					
				
					 3 changed files with 52 additions and 11 deletions
				
			
		|  | @ -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 | ||||||
|  |  | ||||||
|  | @ -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) | ||||||
|  |  | ||||||
|  | @ -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 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy J. Baek
						Timothy J. Baek