Files
2026-11-05 08:28:15 +00:00

46 lines
2.0 KiB
Python

from fastapi import APIRouter, status, Depends, HTTPException, Header
from backend.code.middlewares.private_middleware import PrivateMiddleware
from backend.code.models.requests.account_login import AccountLoginRequest
from backend.code.models.requests.account_recover import AccountRecoverRequest
from backend.code.models.responses.session_token import SessionTokenResponse
from backend.code.modules.sessions.controller import SessionsController
routes = APIRouter(prefix="/account", tags=['Session'])
middleware = PrivateMiddleware()
controller = SessionsController()
@routes.post('/login', status_code = status.HTTP_200_OK, response_model = SessionTokenResponse)
def Login(data: AccountLoginRequest):
session = controller.Login(data.Username, data.Password, data.Domain)
if type(session) is not SessionTokenResponse:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED)
return session
@routes.post('/token/validate', status_code = status.HTTP_200_OK, response_model = SessionTokenResponse)
def ValidateToken(token: str = Depends(middleware.HasToken)):
validation = controller.ValidateToken(token)
if type(validation) is not SessionTokenResponse:
raise HTTPException(status_code = status.HTTP_401_UNAUTHORIZED)
return validation
@routes.post('/logout', status_code = status.HTTP_204_NO_CONTENT)
def Logout(token: str = Depends(middleware.HasToken)):
closed = controller.Logout(token)
if closed is None:
raise HTTPException(status_code = status.HTTP_404_NOT_FOUND)
@routes.post('/recover', status_code = status.HTTP_200_OK)
def RecoverAccount(data: AccountRecoverRequest):
recovered = controller.RecoverAccount(data.Username, data.Domain)
if recovered is None:
raise HTTPException(status_code = status.HTTP_404_NOT_FOUND)
@routes.post("/recover/validate/{token}", status_code=status.HTTP_204_NO_CONTENT)
def ValidateTokenRecoverAccount(token: str):
account = controller.ValidateTokenRecoverAccount(token)
if account is None:
raise HTTPException(status_code = status.HTTP_404_NOT_FOUND)