✨ Added (UNTESTED) user-delete route
This commit is contained in:
@@ -19,7 +19,7 @@ from classquiz.config import redis, settings
|
|||||||
import uuid
|
import uuid
|
||||||
import bleach
|
import bleach
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from classquiz.db.models import User, UserSession, UpdatePassword, Token
|
from classquiz.db.models import User, UserSession, UpdatePassword, Token, Quiz
|
||||||
from classquiz.emails import send_register_email, send_forgotten_password_email
|
from classquiz.emails import send_register_email, send_forgotten_password_email
|
||||||
|
|
||||||
settings = settings()
|
settings = settings()
|
||||||
@@ -64,9 +64,9 @@ async def create_user(user: route_user, background_task: BackgroundTasks) -> Use
|
|||||||
|
|
||||||
@router.post("/token/cookie", response_model=Token)
|
@router.post("/token/cookie", response_model=Token)
|
||||||
async def login_for_cookie_access_token(
|
async def login_for_cookie_access_token(
|
||||||
request: Request,
|
request: Request,
|
||||||
response: Response,
|
response: Response,
|
||||||
form_data: OAuth2PasswordRequestForm = Depends(),
|
form_data: OAuth2PasswordRequestForm = Depends(),
|
||||||
):
|
):
|
||||||
user = await authenticate_user(form_data.username, form_data.password)
|
user = await authenticate_user(form_data.username, form_data.password)
|
||||||
if not user:
|
if not user:
|
||||||
@@ -168,9 +168,9 @@ async def verify_user(verify_key: str):
|
|||||||
|
|
||||||
@router.put("/password/update")
|
@router.put("/password/update")
|
||||||
async def change_password(
|
async def change_password(
|
||||||
password_data: UpdatePassword,
|
password_data: UpdatePassword,
|
||||||
response: Response,
|
response: Response,
|
||||||
user: User = Depends(get_current_user),
|
user: User = Depends(get_current_user),
|
||||||
):
|
):
|
||||||
if not verify_password(password_data.old_password, user.password):
|
if not verify_password(password_data.old_password, user.password):
|
||||||
raise HTTPException(status_code=400, detail="Incorrect password")
|
raise HTTPException(status_code=400, detail="Incorrect password")
|
||||||
@@ -258,3 +258,16 @@ async def delete_session(session_id: str, user: User = Depends(get_current_user)
|
|||||||
async def get_session(user: User = Depends(get_current_user)):
|
async def get_session(user: User = Depends(get_current_user)):
|
||||||
session = await UserSession.objects.filter(user=user).first()
|
session = await UserSession.objects.filter(user=user).first()
|
||||||
return session
|
return session
|
||||||
|
|
||||||
|
|
||||||
|
class DeleteUserInput(BaseModel):
|
||||||
|
password: str
|
||||||
|
|
||||||
|
|
||||||
|
@router.delete("/me")
|
||||||
|
async def delete_user_account(input_data: DeleteUserInput, user: User = Depends(get_current_user)):
|
||||||
|
if not verify_password(input_data.password, user.password):
|
||||||
|
raise HTTPException(status_code=400, detail="Incorrect password")
|
||||||
|
await UserSession.objects.filter(user=user).delete()
|
||||||
|
await Quiz.objects.filter(user=user).delete()
|
||||||
|
await user.delete()
|
||||||
|
|||||||
Reference in New Issue
Block a user