super-fit-web-app / src / layouts / main-layout-protected-admin.tsx
main-layout-protected-admin.tsx
Raw
import { ReactNode, useEffect } from 'react'
import { useRouter } from 'next/router'
import { useUserContext } from '@/context/UserContext'

type Props = {
  children: ReactNode;
}

export default function ProtectedAdmin({ children }: Props) {
  const router = useRouter();
  const { session_valid, userData, setUserData, userSessionDataLoading } = useUserContext();

  useEffect(() => {
    if (!session_valid && !userSessionDataLoading && !userData.isAdmin) router.back();
  }, [ userData ])

  if (!userSessionDataLoading && session_valid && userData.emailVerified !== null && userData.isAdmin) {
    return (
      children
    )
  }
}