diff --git a/src/components/UserCard.tsx b/src/components/UserCard.tsx
index ba02b079..6705677d 100644
--- a/src/components/UserCard.tsx
+++ b/src/components/UserCard.tsx
@@ -248,7 +248,7 @@ const UserCard = ({user, loggedInUser, onClose, onViewStudents, onViewTeachers,
onChange={setCompanyName}
placeholder="Enter corporate name"
defaultValue={companyName}
- disabled={disabled}
+ disabled={disabled || checkAccess(loggedInUser, getTypesOfUser(["developer", "admin"]))}
/>
setUserAmount(e ? parseInt(e) : undefined)}
placeholder="Enter number of users"
defaultValue={userAmount}
- disabled={disabled}
+ disabled={disabled || checkAccess(loggedInUser, getTypesOfUser(["developer", "admin"]))}
/>
setMonthlyDuration(e ? parseInt(e) : undefined)}
placeholder="Enter monthly duration"
defaultValue={monthlyDuration}
- disabled={disabled}
+ disabled={disabled || checkAccess(loggedInUser, getTypesOfUser(["developer", "admin"]))}
/>
diff --git a/src/constants/userPermissions.ts b/src/constants/userPermissions.ts
index af3e7543..8716c301 100644
--- a/src/constants/userPermissions.ts
+++ b/src/constants/userPermissions.ts
@@ -1,91 +1,91 @@
-import { Type } from "@/interfaces/user";
+import {Type} from "@/interfaces/user";
export const PERMISSIONS = {
- generateCode: {
- student: ["corporate", "developer", "admin", "mastercorporate"],
- teacher: ["corporate", "developer", "admin", "mastercorporate"],
- corporate: ["admin", "developer"],
- mastercorporate: ["admin", "developer"],
+ generateCode: {
+ student: ["corporate", "developer", "admin", "mastercorporate"],
+ teacher: ["corporate", "developer", "admin", "mastercorporate"],
+ corporate: ["admin", "developer"],
+ mastercorporate: ["admin", "developer"],
- admin: ["developer", "admin"],
- agent: ["developer", "admin"],
- developer: ["developer"],
- },
- deleteUser: {
- student: {
- perm: "deleteStudent",
- list: ["corporate", "developer", "admin", "mastercorporate"],
- },
- teacher: {
- perm: "deleteTeacher",
- list: ["corporate", "developer", "admin", "mastercorporate"],
- },
- corporate: {
- perm: "deleteCorporate",
- list: ["admin", "developer"],
- },
- mastercorporate: {
- perm: undefined,
- list: ["admin", "developer"],
- },
+ admin: ["developer", "admin"],
+ agent: ["developer", "admin"],
+ developer: ["developer"],
+ },
+ deleteUser: {
+ student: {
+ perm: "deleteStudent",
+ list: ["corporate", "developer", "admin", "mastercorporate"],
+ },
+ teacher: {
+ perm: "deleteTeacher",
+ list: ["corporate", "developer", "admin", "mastercorporate"],
+ },
+ corporate: {
+ perm: "deleteCorporate",
+ list: ["admin", "developer"],
+ },
+ mastercorporate: {
+ perm: undefined,
+ list: ["admin", "developer"],
+ },
- admin: {
- perm: "deleteAdmin",
- list: ["developer", "admin"],
- },
- agent: {
- perm: "deleteCountryManager",
- list: ["developer", "admin"],
- },
- developer: {
- perm: undefined,
- list: ["developer"],
- },
- },
- updateUser: {
- student: {
- perm: "editStudent",
- list: ["developer", "admin"],
- },
- teacher: {
- perm: "editTeacher",
- list: ["developer", "admin"],
- },
+ admin: {
+ perm: "deleteAdmin",
+ list: ["developer", "admin"],
+ },
+ agent: {
+ perm: "deleteCountryManager",
+ list: ["developer", "admin"],
+ },
+ developer: {
+ perm: undefined,
+ list: ["developer"],
+ },
+ },
+ updateUser: {
+ student: {
+ perm: "editStudent",
+ list: ["developer", "admin", "corporate", "mastercorporate", "teacher"],
+ },
+ teacher: {
+ perm: "editTeacher",
+ list: ["developer", "admin", "corporate", "mastercorporate"],
+ },
- corporate: {
- perm: "editCorporate",
- list: ["admin", "developer"],
- },
- mastercorporate: {
- perm: undefined,
- list: ["admin", "developer"],
- },
+ corporate: {
+ perm: "editCorporate",
+ list: ["developer", "admin", "mastercorporate"],
+ },
+ mastercorporate: {
+ perm: undefined,
+ list: ["admin", "developer"],
+ },
- admin: {
- perm: "editAdmin",
- list: ["developer", "admin"],
- },
+ admin: {
+ perm: "editAdmin",
+ list: ["developer", "admin"],
+ },
- agent: {
- perm: "editCountryManager",
- list: ["developer", "admin"],
- },
- developer: {
- perm: undefined,
- list: ["developer"],
- },
- },
- updateExpiryDate: {
- student: ["developer", "admin"],
- teacher: ["developer", "admin"],
- corporate: ["admin", "developer"],
- mastercorporate: ["admin", "developer"],
+ agent: {
+ perm: "editCountryManager",
+ list: ["developer", "admin"],
+ },
+ developer: {
+ perm: undefined,
+ list: ["developer"],
+ },
+ },
+ updateExpiryDate: {
+ student: ["developer", "admin"],
+ teacher: ["developer", "admin"],
+ corporate: ["admin", "developer"],
+ mastercorporate: ["admin", "developer"],
- admin: ["developer", "admin"],
- agent: ["developer", "admin"],
- developer: ["developer"],
- },
- examManagement: {
- delete: ["developer", "admin"],
- },
+ admin: ["developer", "admin"],
+ agent: ["developer", "admin"],
+ developer: ["developer"],
+ },
+ examManagement: {
+ delete: ["developer", "admin"],
+ },
};
diff --git a/src/pages/(admin)/BatchCodeGenerator.tsx b/src/pages/(admin)/BatchCodeGenerator.tsx
index e17f5281..cee8393a 100644
--- a/src/pages/(admin)/BatchCodeGenerator.tsx
+++ b/src/pages/(admin)/BatchCodeGenerator.tsx
@@ -34,15 +34,15 @@ const USER_TYPE_PERMISSIONS: {
},
agent: {
perm: "createCodeCountryManager",
- list: [],
+ list: ["student", "teacher", "corporate", "mastercorporate"],
},
corporate: {
perm: "createCodeCorporate",
- list: ["student", "teacher"],
+ list: ["student", "teacher", "corporate"],
},
mastercorporate: {
perm: undefined,
- list: ["student", "teacher", "corporate"],
+ list: ["student", "teacher", "corporate", "mastercorporate"],
},
admin: {
perm: "createCodeAdmin",
diff --git a/src/pages/(admin)/BatchCreateUser.tsx b/src/pages/(admin)/BatchCreateUser.tsx
index d0d50c57..5335c085 100644
--- a/src/pages/(admin)/BatchCreateUser.tsx
+++ b/src/pages/(admin)/BatchCreateUser.tsx
@@ -11,10 +11,11 @@ import Modal from "@/components/Modal";
import {BsQuestionCircleFill} from "react-icons/bs";
import {PermissionType} from "@/interfaces/permissions";
import moment from "moment";
-import {checkAccess} from "@/utils/permissions";
+import {checkAccess, getTypesOfUser} from "@/utils/permissions";
import Checkbox from "@/components/Low/Checkbox";
import ReactDatePicker from "react-datepicker";
import clsx from "clsx";
+import usePermissions from "@/hooks/usePermissions";
const EMAIL_REGEX = new RegExp(/^[a-zA-Z0-9]+(?:\.[a-zA-Z0-9]+)*@[a-zA-Z0-9]+(?:\.[a-zA-Z0-9]+)*$/);
type Type = Exclude;
@@ -26,7 +27,7 @@ const USER_TYPE_LABELS: {[key in Type]: string} = {
};
const USER_TYPE_PERMISSIONS: {
- [key in Type]: {perm: PermissionType | undefined; list: Type[]};
+ [key in UserType]: {perm: PermissionType | undefined; list: UserType[]};
} = {
student: {
perm: "createCodeStudent",
@@ -36,9 +37,25 @@ const USER_TYPE_PERMISSIONS: {
perm: "createCodeTeacher",
list: [],
},
+ agent: {
+ perm: "createCodeCountryManager",
+ list: ["student", "teacher", "corporate", "mastercorporate"],
+ },
corporate: {
perm: "createCodeCorporate",
- list: ["student", "teacher"],
+ list: ["student", "teacher", "corporate"],
+ },
+ mastercorporate: {
+ perm: undefined,
+ list: ["student", "teacher", "corporate", "mastercorporate"],
+ },
+ admin: {
+ perm: "createCodeAdmin",
+ list: ["student", "teacher", "agent", "corporate", "admin", "mastercorporate"],
+ },
+ developer: {
+ perm: undefined,
+ list: ["student", "teacher", "agent", "corporate", "admin", "developer", "mastercorporate"],
},
};
@@ -65,6 +82,7 @@ export default function BatchCreateUser({user}: {user: User}) {
const [showHelp, setShowHelp] = useState(false);
const {users} = useUsers();
+ const {permissions} = usePermissions(user?.id || "");
const {openFilePicker, filesContent, clear} = useFilePicker({
accept: ".xlsx",
@@ -214,11 +232,17 @@ export default function BatchCreateUser({user}: {user: User}) {
defaultValue="student"
onChange={(e) => setType(e.target.value as Type)}
className="flex min-h-[70px] w-full min-w-[350px] cursor-pointer justify-center rounded-full border bg-white p-6 text-sm font-normal focus:outline-none">
- {Object.keys(USER_TYPE_LABELS).map((type) => (
-
- ))}
+ {Object.keys(USER_TYPE_LABELS)
+ .filter((x) => {
+ const {list, perm} = USER_TYPE_PERMISSIONS[x as Type];
+ // if (x === "corporate") console.log(list, perm, checkAccess(user, list, permissions, perm));
+ return checkAccess(user, getTypesOfUser(list), permissions, perm);
+ })
+ .map((type) => (
+
+ ))}
)}