forked from open-webui/open-webui
		
	feat: change password support
This commit is contained in:
		
							parent
							
								
									450b9b6aef
								
							
						
					
					
						commit
						9bd48ffd93
					
				
					 3 changed files with 108 additions and 1 deletions
				
			
		|  | @ -64,6 +64,11 @@ class SigninForm(BaseModel): | |||
|     password: str | ||||
| 
 | ||||
| 
 | ||||
| class UpdatePasswordForm(BaseModel): | ||||
|     password: str | ||||
|     new_password: str | ||||
| 
 | ||||
| 
 | ||||
| class SignupForm(BaseModel): | ||||
|     name: str | ||||
|     email: str | ||||
|  | @ -109,7 +114,24 @@ class AuthsTable: | |||
|         except: | ||||
|             return None | ||||
| 
 | ||||
|     def delete_auth_by_id(self, id: str) -> Optional[UserModel]: | ||||
|     def update_user_password_by_id( | ||||
|         self, id: str, password: str, new_password: str | ||||
|     ) -> bool: | ||||
|         try: | ||||
|             auth = Auth.get(Auth.id == id, Auth.active == True) | ||||
|             if auth: | ||||
|                 if verify_password(password, auth.password): | ||||
|                     query = Auth.update(password=new_password).where(Auth.id == id) | ||||
|                     result = query.execute() | ||||
|                     print(result) | ||||
|                     return True | ||||
|                 else: | ||||
|                     return False | ||||
|             return True | ||||
|         except: | ||||
|             return False | ||||
| 
 | ||||
|     def delete_auth_by_id(self, id: str) -> bool: | ||||
|         try: | ||||
|             # Delete User | ||||
|             result = Users.delete_user_by_id(id) | ||||
|  |  | |||
|  | @ -11,6 +11,7 @@ import uuid | |||
| from apps.web.models.auths import ( | ||||
|     SigninForm, | ||||
|     SignupForm, | ||||
|     UpdatePasswordForm, | ||||
|     UserResponse, | ||||
|     SigninResponse, | ||||
|     Auths, | ||||
|  | @ -53,6 +54,24 @@ async def get_session_user(cred=Depends(bearer_scheme)): | |||
|         ) | ||||
| 
 | ||||
| 
 | ||||
| ############################ | ||||
| # Update Password | ||||
| ############################ | ||||
| 
 | ||||
| 
 | ||||
| @router.post("/update/password", response_model=bool) | ||||
| async def update_password(form_data: UpdatePasswordForm, cred=Depends(bearer_scheme)): | ||||
|     token = cred.credentials | ||||
|     user = Users.get_user_by_token(token) | ||||
| 
 | ||||
|     if user: | ||||
|         hashed = get_password_hash(form_data.new_password) | ||||
|         return Auths.update_user_password_by_id(user.id, form_data.password, hashed) | ||||
| 
 | ||||
|     else: | ||||
|         raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_CRED) | ||||
| 
 | ||||
| 
 | ||||
| ############################ | ||||
| # SignIn | ||||
| ############################ | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy J. Baek
						Timothy J. Baek