Files
ad/molodetz/routers/profile.py
T

40 lines
1.6 KiB
Python

# retoor <retoor@molodetz.nl>
from fastapi import APIRouter, Request
from molodetz.database import generate_uid, update_user
from molodetz.responses import action_result, respond
from molodetz.schemas.account import ApiKeyOut
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.notifications import create_notification
router = APIRouter()
@router.get("/api-key")
async def api_key_page(request: Request):
user = require_user(request)
seo = base_seo_context(request, "API-sleutel", robots="noindex,nofollow")
return respond(request, "profile/api_key.html", {"api_key": user["api_key"], "seo": seo}, model=ApiKeyOut)
@router.post("/api-key/regenerate")
async def api_key_regenerate(request: Request):
user = require_user(request)
key = generate_uid()
update_user(user["uid"], api_key=key)
invalidate_user_cache(propagate=True)
record(request, "profile.apikey.regenerate", targets=[("user", user["uid"])], user=user)
create_notification(user["uid"], "auth.apikey", "Je API-sleutel is vernieuwd.", "/profile/api-key")
return action_result(request, "/profile/api-key", data={"api_key": key})
@router.post("/avatar/regenerate")
async def avatar_regenerate(request: Request):
user = require_user(request)
update_user(user["uid"], avatar_seed=generate_uid())
invalidate_user_cache(propagate=True)
record(request, "profile.avatar.regenerate", targets=[("user", user["uid"])], user=user)
return action_result(request, f"/mensen/{user['username']}")