🛂 Added change-password in backend

This commit is contained in:
Mawoka
2022-04-07 20:50:25 +02:00
parent 123ddca48f
commit 69a997e6de
3 changed files with 27 additions and 0 deletions
+6
View File
@@ -39,6 +39,12 @@ async def cache_account(criteria: str, content: str) -> Union[User, None]:
return None
async def clear_cache_for_account(user: User):
await redis.delete(user.email)
await redis.delete(user.username)
await redis.delete(str(user.id))
async def get_from_redis(key: str) -> Union[None, User]:
user = await redis.get(key)
if user is None:
+5
View File
@@ -127,3 +127,8 @@ class GameSession(BaseModel):
game_id: str
players: list[GamePlayer | None]
answers: list[GameAnser1 | None]
class UpdatePassword(BaseModel):
old_password: str
new_password: str
+16
View File
@@ -8,6 +8,7 @@ from fastapi.security import OAuth2PasswordRequestForm
from classquiz.auth import *
from classquiz.config import redis
from classquiz.cache import clear_cache_for_account
from classquiz.db.models import *
from classquiz.emails import send_register_email
@@ -115,3 +116,18 @@ async def verify_user(verify_key: str):
user.verify_key = None
await user.update()
return RedirectResponse(url="/account/login?verified=true")
@router.put("/password/update")
async def change_password(password_data: UpdatePassword, response: Response, user: User = Depends(get_current_user)):
if not verify_password(password_data.old_password, user.password):
raise HTTPException(status_code=400, detail="Incorrect password")
user.password = get_password_hash(password_data.new_password)
await user.update()
await clear_cache_for_account(user)
await UserSession.objects.filter(user=user).delete()
response.delete_cookie("access_token")
response.delete_cookie("expiry")
response.delete_cookie("rememberme")
response.delete_cookie("rememberme_token")
return {"message": "Password updated successfully"}