44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
from fastapi import APIRouter,Depends
|
|
from fastapi.responses import JSONResponse
|
|
from fastapi import HTTPException
|
|
from db_setup import get_session
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
from pydantic import BaseModel, EmailStr
|
|
from notifications.views import Confirmation
|
|
from dotenv import load_dotenv
|
|
load_dotenv()
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
class ConfirmEmailRequest(BaseModel):
|
|
token: str
|
|
|
|
|
|
class ConfirmEmailResend(BaseModel):
|
|
email: EmailStr
|
|
|
|
|
|
@router.post("/users/confirm-email")
|
|
async def confirm_email(payload: ConfirmEmailRequest,session: AsyncSession = Depends(get_session)):
|
|
try:
|
|
service=Confirmation(session=session)
|
|
data=await service.confirm(payload.token)
|
|
return JSONResponse(content={"data":data,"status_code":200})
|
|
except HTTPException:
|
|
raise
|
|
except Exception as e:
|
|
raise HTTPException(status_code=500,detail=str(e))
|
|
|
|
|
|
@router.post("/users/confirm-email/resend")
|
|
async def resend_confirm_email(payload: ConfirmEmailResend,session: AsyncSession = Depends(get_session)):
|
|
try:
|
|
service=Confirmation(session=session)
|
|
data=await service.resend(payload.email)
|
|
return JSONResponse(content={"data":data,"status_code":200})
|
|
except HTTPException:
|
|
raise
|
|
except Exception as e:
|
|
raise HTTPException(status_code=500,detail=str(e))
|