import type { Metadata } from "next"; import { requireUser } from "@/lib/auth"; import { getSettings } from "@/lib/settings"; import { prisma } from "@/lib/db"; import { PasswordForm, ProfileForm } from "@/components/settings/Forms"; import { PasskeyList } from "@/components/settings/Passkeys"; import { listPasskeys } from "@/lib/passkeys"; import { MediaServerSettings } from "@/components/settings/MediaServer"; import { listConnections } from "@/lib/mediaserver"; import { env } from "@/lib/env"; import pkg from "../../../package.json"; export const metadata: Metadata = { title: "Einstellungen" }; export default async function SettingsPage() { const session = await requireUser("/einstellungen"); const settings = await getSettings(); const user = await prisma.user.findUniqueOrThrow({ where: { id: session.id }, select: { name: true, email: true, region: true, publicProfile: true, profileSlug: true, showAchievements: true, notifyNewEpisode: true, notifyRelease: true, notifyAvailability: true, passwordHash: true, }, }); const { passwordHash, ...profile } = user; const passkeys = env.passkeys.enabled ? await listPasskeys(session.id) : []; const medienserver = await listConnections(session.id); return (
Anmelden ohne Passwort — per Fingerabdruck, Gesicht oder Sicherheitsschlüssel.
Bestand und Sichtungen aus Jellyfin übernehmen. Der Abgleich ergänzt nur — er löscht nie etwas, das in Flimmer steht.
Flimmer {pkg.version} · Instanz {settings.instanceName}