'use client' import { useState, useEffect } from 'react' import { useRouter } from 'next/navigation' import Link from 'next/link' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { useToast } from '@/components/ui/use-toast' import { ArrowLeft, Building2, Trash2, AlertTriangle, Loader2, Shield, Users, FileText, } from 'lucide-react' export default function SettingsPage() { const [tenant, setTenant] = useState(null) const [loading, setLoading] = useState(true) const [showDeleteDialog, setShowDeleteDialog] = useState(false) const [deleteConfirmText, setDeleteConfirmText] = useState('') const [deleting, setDeleting] = useState(false) const router = useRouter() const { toast } = useToast() useEffect(() => { fetch('/api/tenant/info') .then(r => r.json()) .then(data => { setTenant(data.tenant); setLoading(false) }) .catch(() => setLoading(false)) }, []) const handleDelete = async () => { if (!tenant || deleteConfirmText !== tenant.name) return setDeleting(true) try { const res = await fetch('/api/tenant/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ confirmText: deleteConfirmText }), }) const data = await res.json() if (res.ok) { toast({ title: 'Organisation gelöscht', description: 'Alle Daten wurden entfernt.' }) // Logout and redirect await fetch('/api/auth/logout', { method: 'POST' }) router.push('/') } else { toast({ title: 'Fehler', description: data.error || 'Löschung fehlgeschlagen', variant: 'destructive' }) } } catch { toast({ title: 'Fehler', description: 'Verbindungsfehler', variant: 'destructive' }) } finally { setDeleting(false) } } if (loading) { return (
) } return (
Zurück zur App

Organisation verwalten

{tenant ? (
{/* Tenant Info */}

{tenant.name}

Slug: {tenant.slug}
Plan: {tenant.plan}
Status: {tenant.subscriptionStatus}
Kontakt: {tenant.contactEmail || '–'}
{/* Privacy Info */}

Datenschutz

{tenant.privacyAccepted ? '✅' : '❌'} Datenschutzerklärung akzeptiert {tenant.privacyAcceptedAt && ({new Date(tenant.privacyAcceptedAt).toLocaleDateString('de-CH')})}

{tenant.adminAccessAccepted ? '✅' : '❌'} Administrator-Zugriff akzeptiert

Datenschutzerklärung lesen
{/* Danger Zone */}

Gefahrenzone

Löscht Ihre Organisation {tenant.name} unwiderruflich, inklusive aller Benutzer, Projekte, Lagepläne, Journal-Einträge, Rapports und hochgeladenen Dateien.

{!showDeleteDialog ? ( ) : (

Geben Sie den Namen Ihrer Organisation zur Bestätigung ein:

{tenant.name}

setDeleteConfirmText(e.target.value)} placeholder={tenant.name} className="max-w-xs" autoFocus />
)}
) : (

Keine Organisation zugeordnet.

)}
) }