import type { Metadata } from "next";
import { requirePermission } from "@/lib/auth/session";
import { getVaultEntries, getShareTargets } from "@/lib/vault/queries";
import { PageHeader } from "@/components/ui/PageHeader";
import { VaultManager } from "./VaultManager";

export const metadata: Metadata = { title: "Passwörter" };

// Enthält entschlüsselbare Daten — niemals statisch vorrendern oder cachen.
export const dynamic = "force-dynamic";

export default async function VaultPage() {
  const session = await requirePermission("vault.view");
  const perms = session.user.permissions ?? [];

  const [entries, targets] = await Promise.all([
    getVaultEntries(session.user.id, perms),
    getShareTargets(),
  ]);

  return (
    <div className="flex flex-col gap-5">
      <PageHeader
        eyebrow="Sicherheit"
        title="Passwortmanager"
        description="Zugangsdaten verschlüsselt ablegen, an Personen, Teams und Rollen freigeben und bei Bedarf zusätzlich mit einer PIN schützen."
      />
      <VaultManager
        userId={session.user.id}
        entries={entries}
        targets={targets}
        canManage={perms.includes("vault.manage")}
        canShare={perms.includes("vault.share")}
      />
    </div>
  );
}
