import { auth } from "@/auth"; import { getDomains } from "@/lib/mailcow"; import { canAccessDomain } from "@/lib/users"; import { formatBytes } from "@/lib/format"; import { getDictionary, Locale } from "@/app/dictionaries"; export default async function DashboardPage( props: { params: Promise<{ lang: string }>; } ) { const params = await props.params; const session = await auth(); const role = session?.user?.role; const userDomains = session?.user?.domains ?? []; const lang = params.lang as Locale; const dict = await getDictionary(lang); const allDomains = await getDomains(); const visibleDomains = allDomains.filter((d) => canAccessDomain(userDomains, d.domain_name)); const totalMailboxes = visibleDomains.reduce((sum, d) => sum + d.mboxes_in_domain, 0); const totalAliases = visibleDomains.reduce((sum, d) => sum + d.aliases_in_domain, 0); return ( <>
{dict.dashboard.welcome || "Hoş geldiniz"}, {session?.user?.name} 👋
| {dict.dashboard.domain || "Domain"} | {dict.dashboard.mailboxes || "Mail Kutuları"} | {dict.dashboard.quotaUsage || "Kota Kullanımı"} | {dict.dashboard.status || "Durum"} |
|---|---|---|---|
|
|
{d.mboxes_in_domain} / {d.max_num_mboxes_for_domain} |
{formatBytes(quotaUsed)} / {formatBytes(quotaTotal)}
80 ? "danger" : ""}`} style={{ width: `${pct}%` }} />
{Math.round(pct)}%
|
{String(d.active) === "1" ? `● ${dict.dashboard.active || "Aktif"}` : `● ${dict.dashboard.inactive || "Pasif"}`} |