Fix forgot password for invalid user (#1999)
- fix validation error if user doesn'r exist - always return success even if user doesn't exist for security reasons - add test for forgot password endpoint
This commit is contained in:
		
							parent
							
								
									0b14be896b
								
							
						
					
					
						commit
						41d43ae249
					
				| @ -606,9 +606,7 @@ def init_auth_router(user_manager: UserManager) -> APIRouter: | |||||||
|         email: EmailStr = Body(..., embed=True), |         email: EmailStr = Body(..., embed=True), | ||||||
|     ): |     ): | ||||||
|         user = await user_manager.get_by_email(email) |         user = await user_manager.get_by_email(email) | ||||||
|         if not user: |         if user: | ||||||
|             return None |  | ||||||
| 
 |  | ||||||
|             await user_manager.forgot_password(user, request) |             await user_manager.forgot_password(user, request) | ||||||
|         return {"success": True} |         return {"success": True} | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -422,6 +422,23 @@ def test_user_change_role(admin_auth_headers, default_org_id): | |||||||
|     assert r.json()["updated"] == True |     assert r.json()["updated"] == True | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | def test_forgot_password(): | ||||||
|  |     r = requests.post( | ||||||
|  |         f"{API_PREFIX}/auth/forgot-password", | ||||||
|  |         json={"email": "no-such-user@example.com"} | ||||||
|  |     ) | ||||||
|  |     # always return success for security reasons even if user doesn't exist | ||||||
|  |     assert r.status_code == 202 | ||||||
|  |     detail = r.json()["success"] == True | ||||||
|  | 
 | ||||||
|  |     r = requests.post( | ||||||
|  |         f"{API_PREFIX}/auth/forgot-password", | ||||||
|  |         json={"email": VALID_USER_EMAIL} | ||||||
|  |     ) | ||||||
|  |     assert r.status_code == 202 | ||||||
|  |     detail = r.json()["success"] == True | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| def test_reset_invalid_password(admin_auth_headers): | def test_reset_invalid_password(admin_auth_headers): | ||||||
|     r = requests.put( |     r = requests.put( | ||||||
|         f"{API_PREFIX}/users/me/password-change", |         f"{API_PREFIX}/users/me/password-change", | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user