feat: Add API key authentication for backup tool

- Add get_api_key() and require_api_key() to auth.py
- Add generic key-value settings storage to SettingsStore
- Add test_api_key_auth to verify the implementation
- Uses secrets.compare_digest for timing-safe comparison
- Auto-generates API key on first use and stores in settings DB
This commit is contained in:
2026-05-11 21:25:46 +02:00
parent f912623677
commit 836f733a2e
31 changed files with 2014 additions and 1 deletions
@@ -0,0 +1,53 @@
# Obsidian Documentation Structure for Manage (Media Library Viewer)
**Date:** 2026-05-08
**Status:** Approved
## Purpose
Create a comprehensive, interconnected Obsidian documentation vault for the Manage project (media library viewer application). The documentation targets all audiences: future developers, contributors, operators, and deployers.
## Structure
### Map of Content (MOC)
- `manage/Overview.md` — Central hub with wikilinks to all documentation areas
### Architecture & Overview
- `manage/Architecture.md` — System design, data flow, tech stack
- `manage/Directory Structure.md` — Annotated codebase layout
### Backend
- `manage/Backend/API Endpoints.md` — Complete REST endpoint map
- `manage/Backend/Configuration.md` — Settings, env vars, OIDC
- `manage/Backend/Services.md` — Core services: settings store, media index, poller, mail
- `manage/Backend/Clients.md` — External integrations: Jellyfin, Jellyseerr, SSH
### Frontend
- `manage/Frontend/Pages & Routing.md` — Routes, page components
- `manage/Frontend/Components.md` — Reusable components
- `manage/Frontend/State & Data.md` — Hooks, QueryClient, data fetching
- `manage/Frontend/Auth & Theme.md` — OIDC auth, MUI theme
### Deployment
- `manage/Deployment/Production.md` — Docker Compose, Traefik, TLS
- `manage/Deployment/Development.md` — Dev workflow, hot reload
### Operations
- `manage/Operations/Machine Management.md` — SSH keys, collectors
- `manage/Operations/Monitoring.md` — Poller, metrics
- `manage/Operations/Tasks & Jobs.md` — Saved tasks, job templates
### Development
- `manage/Development/Setup.md` — Getting started for backend + frontend
- `manage/Development/Testing.md` — Test structure and commands
- `manage/Development/Contributing.md` — Conventions, PR workflow
## Cross-Linking Conventions
- Every note uses YAML frontmatter with `tags` and `aliases`
- Related docs linked via `[[wikilinks]]`
- Callouts for warnings, tips, and notes
## Technologies Referenced
- Backend: Python 3.11+, FastAPI, SQLite, Paramiko, PyJWT
- Frontend: React 19, TypeScript 6, Vite 8, MUI 9, D3 7, AG Grid
- Infra: Docker, Traefik, Authentik/OIDC