from typing import Annotated, Optional from fastapi import Cookie, Form, Request from folkugat_web.api import router from folkugat_web.config import auth as config from folkugat_web.fragments import nota from folkugat_web.services import auth as service @router.get("/api/nota") def nota_input(request: Request, value: Optional[str] = None): return nota.input(request, value) @router.post("/api/nota") def login(request: Request, value: Annotated[Optional[str], Form()] = None, nota_folkugat: Annotated[Optional[str], Cookie()] = None): logged_in = service.logged_in(nota_folkugat) new_login = service.login(value) if new_login and not logged_in: response = nota.nota(request) response.set_cookie(key=config.COOKIE_NAME, value=service.build_token(), max_age=config.COOKIE_MAX_AGE) else: response = nota.footer(request, value, logged_in) return response @router.post("/api/logout") def logout(request: Request): response = nota.nota(request) response.delete_cookie(key=config.COOKIE_NAME) return response