import { Navigate } from 'react-router-dom';
import { useAppSelector } from '@/hooks/redux-hooks';
import { useTenantTheme } from '@/hooks/useTenantTheme';
import type { ReactElement } from 'react';
interface TenantProtectedRouteProps {
children: React.ReactNode;
}
const TenantProtectedRoute = ({ children }: TenantProtectedRouteProps): ReactElement => {
const { isAuthenticated, roles, tenantId } = useAppSelector((state) => state.auth);
// Fetch and apply tenant theme
useTenantTheme();
if (!isAuthenticated) {
return ;
}
// Check if user has super_admin role or is a platform user - if yes, redirect to super admin dashboard
// Handle both array and JSON string formats
let rolesArray: string[] = [];
if (Array.isArray(roles)) {
rolesArray = roles;
} else if (typeof roles === 'string') {
try {
rolesArray = JSON.parse(roles);
} catch {
rolesArray = [];
}
}
const hasSuperAdminRole = rolesArray.includes('super_admin');
const isPlatformUser = hasSuperAdminRole || tenantId === '00000000-0000-0000-0000-000000000001';
if (isPlatformUser) {
// If platform user or super_admin, redirect to super admin dashboard
return ;
}
return <>{children}>;
};
export default TenantProtectedRoute;