35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
from typing import Annotated
|
|
|
|
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: str | None = None):
|
|
return nota.input(request, value)
|
|
|
|
|
|
@router.post("/api/nota")
|
|
def login(request: Request, value: Annotated[str | None, Form()] = None,
|
|
nota_folkugat: Annotated[str | None, 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
|