/* eslint-disable @next/next/no-img-element */ import Head from "next/head"; import {withIronSessionSsr} from "iron-session/next"; import {sessionOptions} from "@/lib/session"; import useUser from "@/hooks/useUser"; import {ToastContainer} from "react-toastify"; import Layout from "@/components/High/Layout"; import CodeGenerator from "./(admin)/CodeGenerator"; import ExamLoader from "./(admin)/ExamLoader"; import {Tab} from "@headlessui/react"; import clsx from "clsx"; import Lists from "./(admin)/Lists"; import BatchCodeGenerator from "./(admin)/BatchCodeGenerator"; import {shouldRedirectHome} from "@/utils/navigation.disabled"; import ExamGenerator from "./(admin)/ExamGenerator"; import BatchCreateUser from "./(admin)/BatchCreateUser"; import {checkAccess, getTypesOfUser} from "@/utils/permissions"; import usePermissions from "@/hooks/usePermissions"; import {useState} from "react"; import Modal from "@/components/Modal"; import IconCard from "@/dashboards/IconCard"; import {BsCode, BsCodeSquare, BsGearFill, BsPeopleFill, BsPersonFill} from "react-icons/bs"; import UserCreator from "./(admin)/UserCreator"; import CorporateGradingSystem from "./(admin)/CorporateGradingSystem"; import useGradingSystem from "@/hooks/useGrading"; import {CEFR_STEPS} from "@/resources/grading"; import {User} from "@/interfaces/user"; import {getUserPermissions} from "@/utils/permissions.be"; import {Permission, PermissionType} from "@/interfaces/permissions"; import {getUsers} from "@/utils/users.be"; export const getServerSideProps = withIronSessionSsr(async ({req, res}) => { const user = req.session.user; if (!user || !user.isVerified) { return { redirect: { destination: "/login", permanent: false, }, }; } if (shouldRedirectHome(user) || !checkAccess(user, ["admin", "developer", "corporate", "teacher", "mastercorporate"])) { return { redirect: { destination: "/", permanent: false, }, }; } const permissions = await getUserPermissions(user.id); const users = await getUsers(); return { props: {user, permissions, users}, }; }, sessionOptions); interface Props { user: User; users: User[]; permissions: PermissionType[]; } export default function Admin({user, users, permissions}: Props) { const {gradingSystem, mutate} = useGradingSystem(); const [modalOpen, setModalOpen] = useState(); return ( <> Settings Panel | EnCoach setModalOpen(undefined)}> setModalOpen(undefined)} /> setModalOpen(undefined)}> setModalOpen(undefined)} /> setModalOpen(undefined)}> setModalOpen(undefined)} /> setModalOpen(undefined)}> setModalOpen(undefined)} /> setModalOpen(undefined)}> { mutate({user: user.id, steps}); setModalOpen(undefined); }} />
{checkAccess(user, getTypesOfUser(["teacher"]), permissions, "viewCodes") && (
setModalOpen("createCode")} /> setModalOpen("batchCreateCode")} /> setModalOpen("createUser")} /> setModalOpen("batchCreateUser")} /> {checkAccess(user, ["admin", "corporate", "developer", "mastercorporate"]) && ( setModalOpen("gradingSystem")} /> )}
)}
); }