Files
devplacepy/devplacepy/routers/auth/logout.py
T
retoor ede7a863b7 chore: remove stale agent reports and add PYTHONDONTWRITEBYTECODE export to Makefile
Delete four stale SEO and style agent report JSON/MD files from agents/reports/ that had zero findings or were superseded. Export PYTHONDONTWRITEBYTECODE=1 in the Makefile so all make targets suppress bytecode generation, and add a `tree` target that lists the repository file tree via git ls-tree. Update AGENTS.md and CLAUDE.md documentation to reflect that routers now form a directory tree mirroring URL paths and that bytecode writing is disabled project-wide.
2026-06-13 16:27:41 +00:00

45 lines
1.4 KiB
Python

# retoor <retoor@molodetz.nl>
import logging
from fastapi import APIRouter, Request
from devplacepy.database import get_table, _now_iso
from devplacepy.utils import get_current_user, clear_session_cache
from devplacepy.responses import action_result
from devplacepy.services.audit import record as audit
logger = logging.getLogger(__name__)
router = APIRouter()
@router.get("/logout")
async def logout(request: Request):
user = get_current_user(request)
token = request.cookies.get("session")
if token:
sessions = get_table("sessions")
session = sessions.find_one(session_token=token, deleted_at=None)
if session:
sessions.update(
{
"id": session["id"],
"deleted_at": _now_iso(),
"deleted_by": session["user_uid"],
},
["id"],
)
clear_session_cache(token)
if user:
audit.record(
request,
"auth.logout",
user=user,
target_type="user",
target_uid=user["uid"],
target_label=user.get("username"),
summary=f"user {user.get('username')} logged out",
links=[audit.target("user", user["uid"], user.get("username"))],
)
response = action_result(request, "/")
response.delete_cookie("session")
return response