feat: getrennte Login-Seiten für User (/), Admins (/admin/login)

- /admin/login: neue Login-Seite nur für auditor, admin, domain_admin, superadmin
- /: blockiert Admin-Rollen mit Hinweis auf /admin
- useAuth: neuer loginPage-Parameter für flexiblen Unauthentifiziert-Redirect
- /admin: leitet bei Nicht-Auth zu /admin/login statt /

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
sysops
2026-03-31 23:47:41 +02:00
parent c1a9004720
commit acc0d93318
4 changed files with 117 additions and 7 deletions
+3 -3
View File
@@ -20,7 +20,7 @@ export function hasRole(userRole: string, required: string): boolean {
return (roleLevels[userRole] ?? 0) >= (roleLevels[required] ?? 0);
}
export function useAuth(requireRole?: "admin" | "domain_admin" | "superadmin" | "auditor") {
export function useAuth(requireRole?: "admin" | "domain_admin" | "superadmin" | "auditor", loginPage = "/") {
const router = useRouter();
const cached = getCachedUser();
const [user, setUser] = useState(cached);
@@ -49,9 +49,9 @@ export function useAuth(requireRole?: "admin" | "domain_admin" | "superadmin" |
setLoading(false);
} catch {
setCachedUser(null);
router.replace("/");
router.replace(loginPage);
}
}, [router, requireRole]);
}, [router, requireRole, loginPage]);
useEffect(() => {
checkAuth();