import type { Metadata } from 'next'
import { redirect } from 'next/navigation'
import { KeyRound, UserPlus } from 'lucide-react'
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'
import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert'
import { aktuellerBenutzer, meineBetreuten } from '@/lib/auth/sitzung'
import { db } from '@/lib/db'
import { ZugangFormular } from './zugang-formular'
import { BetreuungFormular } from './betreuung-formular'
export const metadata: Metadata = { title: 'Ersteinrichtung' }
export const dynamic = 'force-dynamic'
/**
* Ersteinrichtung in drei Schritten.
*
* Diese Seite liegt bewusst ausserhalb des Anwendungsrahmens: der Rahmen
* setzt einen Benutzer, einen zweiten Faktor UND eine betreute Person
* voraus. Beim allerersten Start gibt es nichts davon.
*/
export default async function ErsteinrichtungSeite() {
const anzahlBenutzer = await db.user.count({ where: { geloeschtAm: null } })
// Die Sperrzeile ist die eigentliche Auskunft darueber, ob eingerichtet
// wurde. Der Benutzerzaehler allein genuegt nicht: Liegt der erste Zugang
// im Papierkorb, stuende Schritt 1 sonst wieder offen.
const sperre = await db.ersteinrichtung.findUnique({
where: { id: 'einmalig' },
select: { id: true },
})
// --- Schritt 1: Es gibt noch keinen Zugang -------------------------------
if (anzahlBenutzer === 0 && !sperre) {
return (
<>
Schritt 1 von 3: Dein Zugang
Dieser erste Zugang verwaltet auch die Anwendung. Danach richtest du den zweiten
Faktor ein und legst die betreute Person an.
Zum Passwort
Nimm vier zufällige Wörter statt eines kurzen Kunstworts —{' '}
Kastanie-Waschbär-Turm-Grün ist leichter zu merken und deutlich schwerer zu
knacken. Ein Passwortmanager ist noch besser.
>
)
}
const benutzer = await aktuellerBenutzer()
if (!benutzer) redirect('/anmelden')
// --- Schritt 2: Zweiter Faktor fehlt noch --------------------------------
if (!benutzer.totpAktiviertAm) redirect('/zwei-faktor/einrichten')
// --- Schritt 3: Noch keine betreute Person ------------------------------
const betreute = await meineBetreuten(benutzer)
if (betreute.length > 0) redirect('/heute')
return (
Schritt 3 von 3: Die betreute Person
Nur das Nötigste — alles Weitere trägst du später in Ruhe unter Stammdaten nach. Das{' '}
Bestellungsdatum ist das wichtigste Feld: daraus berechnet die Anwendung
das Betreuungsjahr und damit deine gesetzlichen Fristen.
)
}