import type { ReactNode } from 'react' import { Link, Navigate, useLocation } from 'react-router-dom' import { useAuth } from './AuthContext' import type { AuthUser } from '../lib/types' type RequiredRole = 'admin' | 'view' | 'management' export function ManagementGate({ children, role = 'management', }: { children: ReactNode role?: RequiredRole }) { const { loading, user } = useAuth() const location = useLocation() if (loading) { return

Checking sign-in…

} if (!user) { return } if (!hasRole(user, role)) { return } return <>{children} } function hasRole(user: AuthUser, role: RequiredRole): boolean { if (role === 'admin') return user.canAdmin if (role === 'view') return user.canView return user.canAdmin || user.canView } function AccessDenied({ role }: { role: RequiredRole }) { const roleName = role === 'management' ? 'management' : `${role} role` return (

Access denied

Your account does not have the {roleName} permission required for this page.

Back to forms
) }