Alle ausstehenden Aenderungen (Bilder, Texte) fuer den Server-Umzug uebernommen

This commit is contained in:
2026-08-05 18:05:53 +02:00
parent 9af0698056
commit e331965bf1
87 changed files with 8296 additions and 309 deletions
+56
View File
@@ -41,6 +41,19 @@ import {
import { listAuditLog } from "./routes/audit.js";
import { checkTikTokLive } from "./lib/tiktok-live.js";
import { logAction } from "./lib/audit.js";
import { requireSupporterSession } from "./lib/supporter-auth.js";
import {
registerSupporter, verifySupporterEmail, requestSupporterLogin, verifySupporterLogin, logoutSupporter,
googleLoginSupporter, getPublicConfig,
getSupporterMe, updateSupporterProfile, requestSupporterEmailChange, confirmSupporterEmailChange,
redeemPremium, deleteSupporterAccount,
} from "./routes/supporter.js";
import {
startPaypalSubscription, confirmPaypalSubscription, cancelPaypalSubscription, handlePaypalWebhook,
} from "./routes/supporter-paypal.js";
import {
listSupporters, getSupporterDetail, updatePremium, listCollections, upsertCollection, getAdminOverview,
} from "./routes/supporter-admin.js";
/* =====================================================================
LIVE-STATUS
@@ -225,6 +238,32 @@ const AUTHED_ROUTES = {
"POST /admin/users/update-meta": (req, env, session) => updateUserMeta(req, env, session),
"POST /admin/audit/list": (req, env, session) => listAuditLog(req, env, session),
// Supporter-Abo — Administrationsbereich (interne Team-Session + eigene
// SUPPORTER_*-Rechte, siehe permissions.js).
"POST /admin/overview": (req, env, session) => getAdminOverview(req, env, session),
"POST /admin/supporter/list": (req, env, session) => listSupporters(req, env, session),
"POST /admin/supporter/detail": (req, env, session) => getSupporterDetail(req, env, session),
"POST /admin/supporter/premium/update": (req, env, session) => updatePremium(req, env, session),
"POST /admin/supporter/collections/list": (req, env, session) => listCollections(req, env, session),
"POST /admin/supporter/collections/upsert": (req, env, session) => upsertCollection(req, env, session),
};
// Routen des ÖFFENTLICHEN Supporter-Bereichs, die eine gültige
// Supporter-Session brauchen (eigenes, von AUTHED_ROUTES komplett
// getrenntes Token-System — siehe lib/supporter-auth.js). `supporter`
// (die volle supporter_users-Zeile) wird injiziert statt `session`.
const SUPPORTER_AUTHED_ROUTES = {
"POST /supporter/logout": (req, env) => logoutSupporter(req, env),
"POST /supporter/me": (req, env, supporter) => getSupporterMe(req, env, supporter),
"POST /supporter/update-profile": (req, env, supporter) => updateSupporterProfile(req, env, supporter),
"POST /supporter/request-email-change": (req, env, supporter) => requestSupporterEmailChange(req, env, supporter),
"POST /supporter/confirm-email-change": (req, env, supporter) => confirmSupporterEmailChange(req, env, supporter),
"POST /supporter/redeem-premium": (req, env, supporter) => redeemPremium(req, env, supporter),
"POST /supporter/delete-account": (req, env, supporter) => deleteSupporterAccount(req, env, supporter),
"POST /supporter/paypal/start": (req, env, supporter) => startPaypalSubscription(req, env, supporter),
"POST /supporter/paypal/confirm": (req, env, supporter) => confirmPaypalSubscription(req, env, supporter),
"POST /supporter/paypal/cancel": (req, env, supporter) => cancelPaypalSubscription(req, env, supporter),
};
export default {
@@ -249,6 +288,23 @@ export default {
return login(request, env);
}
// Supporter-Abo — öffentliche Routen ohne Session (Registrierung/Login).
if (url.pathname === "/supporter/register" && request.method === "POST") return registerSupporter(request, env);
if (url.pathname === "/supporter/verify-email" && request.method === "POST") return verifySupporterEmail(request, env);
if (url.pathname === "/supporter/login-request" && request.method === "POST") return requestSupporterLogin(request, env);
if (url.pathname === "/supporter/verify-login" && request.method === "POST") return verifySupporterLogin(request, env);
if (url.pathname === "/supporter/google-login" && request.method === "POST") return googleLoginSupporter(request, env);
if (url.pathname === "/supporter/public-config" && request.method === "GET") return getPublicConfig(request, env);
// PayPal ruft diese Adresse direkt auf — eigene Signaturprüfung statt Session (siehe paypal.js).
if (url.pathname === "/supporter/paypal-webhook" && request.method === "POST") return handlePaypalWebhook(request, env);
const supporterHandler = SUPPORTER_AUTHED_ROUTES[routeKey];
if (supporterHandler) {
const supporter = await requireSupporterSession(request, env);
if (!supporter) return json({ ok: false, error: "Sitzung abgelaufen oder ungültig. Bitte erneut einloggen." }, 401);
return supporterHandler(request, env, supporter);
}
const handler = AUTHED_ROUTES[routeKey];
if (handler) {
const session = await requireSession(request, env);