Files
ad/molodetz/routers/voorwaarden.py
T

31 lines
1.3 KiB
Python

# retoor <retoor@molodetz.nl>
from fastapi import APIRouter, Request
from molodetz.database import get_setting, update_user
from molodetz.responses import action_result, respond
from molodetz.schemas.account import PageOut
from molodetz.seo import base_seo_context
from molodetz.utils.audit import record
from molodetz.utils.auth import invalidate_user_cache, require_user
from molodetz.utils.request_meta import safe_next
router = APIRouter()
@router.get("")
async def terms(request: Request):
seo = base_seo_context(request, "Voorwaarden", breadcrumbs=[("Molodetz", "/"), ("Voorwaarden", "/voorwaarden")])
ctx = {"title": "Voorwaarden", "terms_version": get_setting("terms_version", "1"), "next": safe_next(request.query_params.get("next"), "/"), "seo": seo}
return respond(request, "voorwaarden.html", ctx, model=PageOut)
@router.post("/accept")
async def accept_terms(request: Request):
user = require_user(request)
version = get_setting("terms_version", "1")
update_user(user["uid"], terms_version=version)
invalidate_user_cache(propagate=True)
record(request, "auth.terms.accept", payload={"version": version}, user=user)
form = await request.form() if not request.headers.get("content-type", "").startswith("application/json") else {}
return action_result(request, safe_next(form.get("next") if form else None, "/"))