46 lines
2.0 KiB
Python
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)
|