feat: rebuild rss-news backend, admin ui, and legal extraction pipeline

This commit is contained in:
Oliver 2026-02-18 09:46:44 +01:00
parent d65c55d315
commit 2c331d683b
No known key found for this signature in database
43 changed files with 3463 additions and 73 deletions

31
backend/app/auth.py Normal file
View file

@ -0,0 +1,31 @@
import hmac
from typing import Optional
from itsdangerous import URLSafeTimedSerializer, BadSignature, SignatureExpired
from .config import get_settings
def _serializer() -> URLSafeTimedSerializer:
settings = get_settings()
return URLSafeTimedSerializer(settings.app_secret_key, salt="rss-news-session")
def verify_credentials(username: str, password: str) -> bool:
settings = get_settings()
user_ok = hmac.compare_digest(username, settings.app_admin_username)
pw_ok = hmac.compare_digest(password, settings.app_admin_password)
return user_ok and pw_ok
def create_session_token(username: str) -> str:
return _serializer().dumps({"username": username})
def verify_session_token(token: str) -> Optional[str]:
settings = get_settings()
try:
payload = _serializer().loads(token, max_age=settings.session_max_age_seconds)
except (BadSignature, SignatureExpired):
return None
return payload.get("username")