import { auth } from '@/lib/auth' import { prisma } from '@innungsapp/shared' import { headers } from 'next/headers' import Link from 'next/link' import { redirect } from 'next/navigation' export default async function GlobalDashboardRedirect() { const headerList = await headers() const host = headerList.get('host') || '' const session = await auth.api.getSession({ headers: headerList }) if (!session?.user) { redirect('/login') } // Superadmin logic const superAdminEmail = process.env.SUPERADMIN_EMAIL || 'superadmin@innungsapp.de' const isSuperAdmin = session.user.email === superAdminEmail || session.user.role === 'admin' if (isSuperAdmin) { redirect('/superadmin') } const userRoles = await prisma.userRole.findMany({ where: { userId: session.user.id, role: 'admin' }, include: { org: { select: { id: true, name: true, slug: true }, }, }, orderBy: { createdAt: 'asc' }, }) if (userRoles.length === 1) { const slug = userRoles[0].org.slug const protocol = host.includes('localhost') ? 'http' : 'https' // Construct the subdomain URL let newHost = host if (host.includes('localhost')) { const port = host.includes(':') ? `:${host.split(':')[1]}` : '' newHost = `${slug}.localhost${port}` } else { // Assumes domain.tld const parts = host.split('.') if (parts.length === 2) { newHost = `${slug}.${host}` } else if (parts.length > 2) { newHost = `${slug}.${parts.slice(-2).join('.')}` } } redirect(`${protocol}://${newHost}/dashboard`) } const getOrgUrl = (slug: string, currentHost: string) => { const protocol = currentHost.includes('localhost') ? 'http' : 'https' let newHost = currentHost if (currentHost.includes('localhost')) { const port = currentHost.includes(':') ? `:${currentHost.split(':')[1]}` : '' newHost = `${slug}.localhost${port}` } else { const parts = currentHost.split('.') newHost = parts.length >= 2 ? `${slug}.${parts.slice(-2).join('.')}` : `${slug}.${currentHost}` } return `${protocol}://${newHost}/dashboard` } return (
Ihr Konto hat aktuell keinen Admin-Zugriff auf eine Innung.
)}