# retoor 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, "Terms", breadcrumbs=[("Molodetz", "/"), ("Terms", "/terms")]) ctx = {"title": "Terms", "terms_version": get_setting("terms_version", "1"), "next": safe_next(request.query_params.get("next"), "/"), "seo": seo} return respond(request, "terms.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, "/"))