import type { Metadata } from "next"; import Link from "next/link"; import { ChangePasswordForm, SignOutCard } from "@/components/account"; import { Badge, Card, CardTitle, Notice } from "@/components/ui"; import { isAuthEnabled } from "@/lib/auth/actor"; import { requirePageActor } from "@/lib/auth/guard"; import { MIN_PASSWORD_LENGTH } from "@/lib/auth/password"; import { ROLE_DESCRIPTIONS, ROLE_LABELS } from "@/lib/auth/policy"; import { prisma } from "@/lib/db"; export const metadata: Metadata = { title: "Konto" }; export const dynamic = "force-dynamic"; export default async function AccountPage() { const actor = await requirePageActor(); // Konten aus dem externen Verzeichnis haben hier kein Passwort. const ausVerzeichnis = actor.kind === "user" ? ((await prisma.user.findUnique({ where: { id: actor.user.id }, select: { passwordHash: true }, }))?.passwordHash ?? null) === null : false; // Bei ausgeschalteter Anmeldung gibt es kein Konto — dann erklärt die Seite, // wie sich das umstellen lässt, statt einfach leer zu sein. if (actor.kind !== "user") { return (

Konto

Die Anmeldung ist ausgeschaltet.{" "} Es gibt deshalb kein Konto und niemanden zum Abmelden — wer die Anwendung erreicht, darf alles. Zum Einschalten{" "} AUTH_ENABLED=true {" "} in der .env setzen und{" "} docker compose up -d {" "} ausführen. Beim nächsten Aufruf legst du den ersten Administrator an.
Zur Typ-Auswahl
); } const { user } = actor; return (

Konto

Deine Anmeldedaten und die Gruppen, in denen du mitarbeitest.

Angemeldet als
Name:
{user.name?.trim() || "—"}
E-Mail:
{user.email}
Rolle:
{user.isInstanceAdmin ? ( Administrator der Installation ) : ( Benutzer )}
Meine Gruppen {user.memberships.length === 0 ? (

Du bist in keiner Gruppe. Bitte einen Administrator, dich einer zuzuordnen — sonst kannst du keine Codes anlegen.

) : (
    {user.memberships.map((membership) => (
  • {membership.groupName} {ROLE_LABELS[membership.role]} {ROLE_DESCRIPTIONS[membership.role]}
  • ))}
)}
{isAuthEnabled() ? ( <> {ausVerzeichnis ? ( Passwort

Dieses Konto meldet sich über den externen Anbieter an. Ein Passwort gibt es hier nicht — geändert wird es beim Anbieter.

) : ( )} ) : null}
); }