32 lines
852 B
TypeScript
32 lines
852 B
TypeScript
import { Navigate } from 'react-router-dom';
|
|
import { useAuthStore } from '../../store/authStore';
|
|
|
|
interface AwsAdminGuardProps {
|
|
children: React.ReactNode;
|
|
}
|
|
|
|
/**
|
|
* Route guard that only allows access to users of the aws-admin account
|
|
* Used for the single remaining admin dashboard page
|
|
*/
|
|
export const AwsAdminGuard: React.FC<AwsAdminGuardProps> = ({ children }) => {
|
|
const { user, loading } = useAuthStore();
|
|
|
|
if (loading) {
|
|
return (
|
|
<div className="flex items-center justify-center h-screen">
|
|
<div className="animate-spin rounded-full h-12 w-12 border-b-2 border-primary-600"></div>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
// Check if user belongs to aws-admin account
|
|
const isAwsAdmin = user?.account?.slug === 'aws-admin';
|
|
|
|
if (!isAwsAdmin) {
|
|
return <Navigate to="/dashboard" replace />;
|
|
}
|
|
|
|
return <>{children}</>;
|
|
};
|