diff --git a/src/app/page.tsx b/src/app/page.tsx index ba9661f..4892c7d 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -18,8 +18,9 @@ export default function LoginPage() { useEffect(() => { // Only redirect if we have a cached session — no API call, no loop risk - if (getCachedUser() !== null) { - router.replace("/search"); + const cached = getCachedUser(); + if (cached !== null) { + router.replace(cached.role === "superadmin" ? "/admin" : "/search"); } }, [router]); @@ -29,8 +30,9 @@ export default function LoginPage() { setLoading(true); try { - await login(username, password); - router.push("/search"); + const res = await login(username, password); + const role = res?.user?.role ?? ""; + router.push(role === "superadmin" ? "/admin" : "/search"); } catch { setError("Anmeldung fehlgeschlagen. Bitte Zugangsdaten pruefen."); } finally { diff --git a/src/app/search/page.tsx b/src/app/search/page.tsx index 6aa8f5f..d9f04ba 100644 --- a/src/app/search/page.tsx +++ b/src/app/search/page.tsx @@ -114,9 +114,16 @@ export default function SearchPage() { [query, fromFilter, toFilter, dateFrom, dateTo, sort, hasAttachment, selectedLabelId] ); + // Superadmin has no mail access — redirect to admin dashboard + useEffect(() => { + if (user?.role === "superadmin") { + router.replace("/admin"); + } + }, [user, router]); + // Alle Mails beim Öffnen der Seite laden — direkt, ohne useCallback-Closure useEffect(() => { - if (!user) return; + if (!user || user.role === "superadmin") return; setSearching(true); searchEmails({ page: 1, page_size: PAGE_SIZE }) .then((res) => {