HR-ATS-Portal/backend/notifications/app.py

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))