Renamed the admin type to corporate
This commit is contained in:
@@ -2,30 +2,30 @@ import {Type} from "@/interfaces/user";
|
|||||||
|
|
||||||
export const PERMISSIONS = {
|
export const PERMISSIONS = {
|
||||||
generateCode: {
|
generateCode: {
|
||||||
student: ["teacher", "admin", "developer", "owner"],
|
student: ["teacher", "corporate", "developer", "owner"],
|
||||||
teacher: ["admin", "developer", "owner"],
|
teacher: ["corporate", "developer", "owner"],
|
||||||
admin: ["owner", "developer"],
|
corporate: ["owner", "developer"],
|
||||||
owner: ["developer", "owner"],
|
owner: ["developer", "owner"],
|
||||||
developer: ["developer"],
|
developer: ["developer"],
|
||||||
},
|
},
|
||||||
deleteUser: {
|
deleteUser: {
|
||||||
student: ["teacher", "admin", "developer", "owner"],
|
student: ["teacher", "corporate", "developer", "owner"],
|
||||||
teacher: ["admin", "developer", "owner"],
|
teacher: ["corporate", "developer", "owner"],
|
||||||
admin: ["owner", "developer"],
|
corporate: ["owner", "developer"],
|
||||||
owner: ["developer", "owner"],
|
owner: ["developer", "owner"],
|
||||||
developer: ["developer"],
|
developer: ["developer"],
|
||||||
},
|
},
|
||||||
updateUser: {
|
updateUser: {
|
||||||
student: ["teacher", "admin", "developer", "owner"],
|
student: ["teacher", "corporate", "developer", "owner"],
|
||||||
teacher: ["admin", "developer", "owner"],
|
teacher: ["corporate", "developer", "owner"],
|
||||||
admin: ["owner", "developer"],
|
corporate: ["owner", "developer"],
|
||||||
owner: ["developer", "owner"],
|
owner: ["developer", "owner"],
|
||||||
developer: ["developer"],
|
developer: ["developer"],
|
||||||
},
|
},
|
||||||
updateExpiryDate: {
|
updateExpiryDate: {
|
||||||
student: ["developer", "owner"],
|
student: ["developer", "owner"],
|
||||||
teacher: ["developer", "owner"],
|
teacher: ["developer", "owner"],
|
||||||
admin: ["owner", "developer"],
|
corporate: ["owner", "developer"],
|
||||||
owner: ["developer", "owner"],
|
owner: ["developer", "owner"],
|
||||||
developer: ["developer"],
|
developer: ["developer"],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -103,10 +103,10 @@ export default function OwnerDashboard({user}: Props) {
|
|||||||
<BsArrowLeft className="text-xl" />
|
<BsArrowLeft className="text-xl" />
|
||||||
<span>Back</span>
|
<span>Back</span>
|
||||||
</div>
|
</div>
|
||||||
<h2 className="text-2xl font-semibold">Corporate ({users.filter((x) => x.type === "admin").length})</h2>
|
<h2 className="text-2xl font-semibold">Corporate ({users.filter((x) => x.type === "corporate").length})</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<UserList user={user} filter={(x) => x.type === "admin"} />
|
<UserList user={user} filter={(x) => x.type === "corporate"} />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -131,7 +131,7 @@ export default function OwnerDashboard({user}: Props) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const InactiveCorporateList = () => {
|
const InactiveCorporateList = () => {
|
||||||
const filter = (x: User) => x.type === "admin" && (x.isDisabled || moment().isAfter(x.subscriptionExpirationDate));
|
const filter = (x: User) => x.type === "corporate" && (x.isDisabled || moment().isAfter(x.subscriptionExpirationDate));
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@@ -177,7 +177,7 @@ export default function OwnerDashboard({user}: Props) {
|
|||||||
<BsPersonFillGear className="text-mti-purple-light text-6xl" />
|
<BsPersonFillGear className="text-mti-purple-light text-6xl" />
|
||||||
<span className="flex flex-col gap-1 items-center text-xl">
|
<span className="flex flex-col gap-1 items-center text-xl">
|
||||||
<span className="text-lg">Corporate</span>
|
<span className="text-lg">Corporate</span>
|
||||||
<span className="font-semibold text-mti-purple">{users.filter((x) => x.type === "admin").length}</span>
|
<span className="font-semibold text-mti-purple">{users.filter((x) => x.type === "corporate").length}</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="bg-white rounded-xl shadow p-4 flex flex-col gap-4 items-center w-52 h-52 justify-center cursor-pointer hover:shadow-xl transition ease-in-out duration-300">
|
<div className="bg-white rounded-xl shadow p-4 flex flex-col gap-4 items-center w-52 h-52 justify-center cursor-pointer hover:shadow-xl transition ease-in-out duration-300">
|
||||||
@@ -207,7 +207,7 @@ export default function OwnerDashboard({user}: Props) {
|
|||||||
<span className="flex flex-col gap-1 items-center text-xl">
|
<span className="flex flex-col gap-1 items-center text-xl">
|
||||||
<span className="text-lg text-center">Inactive Corporate</span>
|
<span className="text-lg text-center">Inactive Corporate</span>
|
||||||
<span className="font-semibold text-mti-rose">
|
<span className="font-semibold text-mti-rose">
|
||||||
{users.filter((x) => x.type === "admin" && (x.isDisabled || moment().isAfter(x.subscriptionExpirationDate))).length}
|
{users.filter((x) => x.type === "corporate" && (x.isDisabled || moment().isAfter(x.subscriptionExpirationDate))).length}
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -229,7 +229,7 @@ export default function OwnerDashboard({user}: Props) {
|
|||||||
<span className="p-4">Latest corporate</span>
|
<span className="p-4">Latest corporate</span>
|
||||||
<div className="flex flex-col items-start h-96 overflow-scroll scrollbar-hide">
|
<div className="flex flex-col items-start h-96 overflow-scroll scrollbar-hide">
|
||||||
{users
|
{users
|
||||||
.filter((x) => x.type === "admin")
|
.filter((x) => x.type === "corporate")
|
||||||
.sort((a, b) => dateSorter(a, b, "asc", "registrationDate"))
|
.sort((a, b) => dateSorter(a, b, "asc", "registrationDate"))
|
||||||
.map((x) => (
|
.map((x) => (
|
||||||
<UserDisplay key={x.id} {...x} />
|
<UserDisplay key={x.id} {...x} />
|
||||||
@@ -240,7 +240,7 @@ export default function OwnerDashboard({user}: Props) {
|
|||||||
<span className="p-4">Disabled Corporate</span>
|
<span className="p-4">Disabled Corporate</span>
|
||||||
<div className="flex flex-col items-start h-96 overflow-scroll scrollbar-hide">
|
<div className="flex flex-col items-start h-96 overflow-scroll scrollbar-hide">
|
||||||
{users
|
{users
|
||||||
.filter((x) => x.type === "admin" && x.isDisabled)
|
.filter((x) => x.type === "corporate" && x.isDisabled)
|
||||||
.map((x) => (
|
.map((x) => (
|
||||||
<UserDisplay key={x.id} {...x} />
|
<UserDisplay key={x.id} {...x} />
|
||||||
))}
|
))}
|
||||||
@@ -282,7 +282,7 @@ export default function OwnerDashboard({user}: Props) {
|
|||||||
{users
|
{users
|
||||||
.filter(
|
.filter(
|
||||||
(x) =>
|
(x) =>
|
||||||
x.type === "admin" &&
|
x.type === "corporate" &&
|
||||||
x.subscriptionExpirationDate &&
|
x.subscriptionExpirationDate &&
|
||||||
moment().isAfter(moment(x.subscriptionExpirationDate).subtract(30, "days")),
|
moment().isAfter(moment(x.subscriptionExpirationDate).subtract(30, "days")),
|
||||||
)
|
)
|
||||||
@@ -307,9 +307,9 @@ export default function OwnerDashboard({user}: Props) {
|
|||||||
if (shouldReload) reload();
|
if (shouldReload) reload();
|
||||||
}}
|
}}
|
||||||
onViewStudents={
|
onViewStudents={
|
||||||
selectedUser.type === "admin" || selectedUser.type === "teacher" ? () => setPage("students") : undefined
|
selectedUser.type === "corporate" || selectedUser.type === "teacher" ? () => setPage("students") : undefined
|
||||||
}
|
}
|
||||||
onViewTeachers={selectedUser.type === "admin" ? () => setPage("teachers") : undefined}
|
onViewTeachers={selectedUser.type === "corporate" ? () => setPage("teachers") : undefined}
|
||||||
{...selectedUser}
|
{...selectedUser}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -65,5 +65,5 @@ export interface Group {
|
|||||||
disableEditing?: boolean;
|
disableEditing?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type Type = "student" | "teacher" | "admin" | "owner" | "developer";
|
export type Type = "student" | "teacher" | "corporate" | "owner" | "developer";
|
||||||
export const userTypes: Type[] = ["student", "teacher", "admin", "owner", "developer"];
|
export const userTypes: Type[] = ["student", "teacher", "corporate", "owner", "developer"];
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ export default function BatchCodeGenerator({user}: {user: User}) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (user && (user.type === "admin" || user.type === "teacher")) {
|
if (user && (user.type === "corporate" || user.type === "teacher")) {
|
||||||
setExpiryDate(user.subscriptionExpirationDate || null);
|
setExpiryDate(user.subscriptionExpirationDate || null);
|
||||||
}
|
}
|
||||||
}, [user]);
|
}, [user]);
|
||||||
@@ -126,8 +126,8 @@ export default function BatchCodeGenerator({user}: {user: User}) {
|
|||||||
<Button
|
<Button
|
||||||
className="w-44 2xl:w-48"
|
className="w-44 2xl:w-48"
|
||||||
variant="outline"
|
variant="outline"
|
||||||
onClick={() => generateCode("admin")}
|
onClick={() => generateCode("corporate")}
|
||||||
disabled={emails.length === 0 || isLoading || !PERMISSIONS.generateCode.admin.includes(user.type)}>
|
disabled={emails.length === 0 || isLoading || !PERMISSIONS.generateCode.corporate.includes(user.type)}>
|
||||||
Admin
|
Admin
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export default function CodeGenerator({user}: {user: User}) {
|
|||||||
const [isExpiryDateEnabled, setIsExpiryDateEnabled] = useState(true);
|
const [isExpiryDateEnabled, setIsExpiryDateEnabled] = useState(true);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (user && (user.type === "admin" || user.type === "teacher")) {
|
if (user && (user.type === "corporate" || user.type === "teacher")) {
|
||||||
setExpiryDate(user.subscriptionExpirationDate || null);
|
setExpiryDate(user.subscriptionExpirationDate || null);
|
||||||
}
|
}
|
||||||
}, [user]);
|
}, [user]);
|
||||||
@@ -75,8 +75,8 @@ export default function CodeGenerator({user}: {user: User}) {
|
|||||||
<Button
|
<Button
|
||||||
className="w-44 2xl:w-48"
|
className="w-44 2xl:w-48"
|
||||||
variant="outline"
|
variant="outline"
|
||||||
onClick={() => generateCode("admin")}
|
onClick={() => generateCode("corporate")}
|
||||||
disabled={!PERMISSIONS.generateCode.admin.includes(user.type) || (isExpiryDateEnabled && expiryDate === null)}>
|
disabled={!PERMISSIONS.generateCode.corporate.includes(user.type) || (isExpiryDateEnabled && expiryDate === null)}>
|
||||||
Admin
|
Admin
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ const CreatePanel = ({user, users, group, onCreate}: CreateDialogProps) => {
|
|||||||
const emailUsers = [...new Set(emails)].map((x) => users.find((y) => y.email.toLowerCase() === x)).filter((x) => x !== undefined);
|
const emailUsers = [...new Set(emails)].map((x) => users.find((y) => y.email.toLowerCase() === x)).filter((x) => x !== undefined);
|
||||||
const filteredUsers = emailUsers.filter(
|
const filteredUsers = emailUsers.filter(
|
||||||
(x) =>
|
(x) =>
|
||||||
((user.type === "developer" || user.type === "owner" || user.type === "admin") &&
|
((user.type === "developer" || user.type === "owner" || user.type === "corporate") &&
|
||||||
(x?.type === "student" || x?.type === "teacher")) ||
|
(x?.type === "student" || x?.type === "teacher")) ||
|
||||||
(user.type === "teacher" && x?.type === "student"),
|
(user.type === "teacher" && x?.type === "student"),
|
||||||
);
|
);
|
||||||
@@ -140,7 +140,7 @@ export default function GroupList({user}: {user: User}) {
|
|||||||
}, [showDisclosure]);
|
}, [showDisclosure]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (user && (user.type === "admin" || user.type === "teacher")) {
|
if (user && (user.type === "corporate" || user.type === "teacher")) {
|
||||||
setFilterByUser(true);
|
setFilterByUser(true);
|
||||||
}
|
}
|
||||||
}, [user]);
|
}, [user]);
|
||||||
|
|||||||
@@ -31,7 +31,9 @@ export default function UserList({user, filter}: {user: User; filter?: (user: Us
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (user && users) {
|
if (user && users) {
|
||||||
const filterUsers =
|
const filterUsers =
|
||||||
user.type === "admin" || user.type === "student" ? users.filter((u) => groups.flatMap((g) => g.participants).includes(u.id)) : users;
|
user.type === "corporate" || user.type === "student"
|
||||||
|
? users.filter((u) => groups.flatMap((g) => g.participants).includes(u.id))
|
||||||
|
: users;
|
||||||
|
|
||||||
const filteredUsers = filter ? filterUsers.filter(filter) : filterUsers;
|
const filteredUsers = filter ? filterUsers.filter(filter) : filterUsers;
|
||||||
|
|
||||||
@@ -141,9 +143,9 @@ export default function UserList({user, filter}: {user: User; filter?: (user: Us
|
|||||||
Teacher
|
Teacher
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
onClick={() => updateAccountType(row.original, "admin")}
|
onClick={() => updateAccountType(row.original, "corporate")}
|
||||||
className="text-sm !py-2 !px-4"
|
className="text-sm !py-2 !px-4"
|
||||||
disabled={row.original.type === "admin" || !PERMISSIONS.generateCode["admin"].includes(user.type)}>
|
disabled={row.original.type === "corporate" || !PERMISSIONS.generateCode["corporate"].includes(user.type)}>
|
||||||
Admin
|
Admin
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ export default function Home() {
|
|||||||
<Layout user={user}>
|
<Layout user={user}>
|
||||||
{user.type === "student" && <StudentDashboard user={user} />}
|
{user.type === "student" && <StudentDashboard user={user} />}
|
||||||
{user.type === "teacher" && <StudentDashboard user={user} />}
|
{user.type === "teacher" && <StudentDashboard user={user} />}
|
||||||
{user.type === "admin" && <StudentDashboard user={user} />}
|
{user.type === "corporate" && <StudentDashboard user={user} />}
|
||||||
{user.type === "owner" && <StudentDashboard user={user} />}
|
{user.type === "owner" && <StudentDashboard user={user} />}
|
||||||
{user.type === "developer" && <OwnerDashboard user={user} />}
|
{user.type === "developer" && <OwnerDashboard user={user} />}
|
||||||
</Layout>
|
</Layout>
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ export default function History({user}: {user: User}) {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{(user.type === "admin" || user.type === "teacher") && groups.length > 0 && (
|
{(user.type === "corporate" || user.type === "teacher") && groups.length > 0 && (
|
||||||
<Select
|
<Select
|
||||||
options={users
|
options={users
|
||||||
.filter((x) => groups.flatMap((y) => y.participants).includes(x.id))
|
.filter((x) => groups.flatMap((y) => y.participants).includes(x.id))
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ export default function Stats() {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{(user.type === "admin" || user.type === "teacher") && groups.length > 0 && (
|
{(user.type === "corporate" || user.type === "teacher") && groups.length > 0 && (
|
||||||
<Select
|
<Select
|
||||||
className="w-full"
|
className="w-full"
|
||||||
options={users
|
options={users
|
||||||
|
|||||||
@@ -1,201 +0,0 @@
|
|||||||
import {Type, User} from "@/interfaces/user";
|
|
||||||
|
|
||||||
interface Permissions {
|
|
||||||
createUser: {[key in Type]: boolean};
|
|
||||||
deleteUser: {[key in Type]: boolean};
|
|
||||||
manageUser: {[key in Type]: boolean};
|
|
||||||
viewUsers: {[key in Type]: boolean};
|
|
||||||
viewStats: boolean;
|
|
||||||
viewUserStats: boolean;
|
|
||||||
viewClassStats: boolean;
|
|
||||||
createClass: boolean;
|
|
||||||
manageClass: boolean;
|
|
||||||
deleteClass: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
const permissions: {[key in Type]: Permissions} = {
|
|
||||||
student: {
|
|
||||||
createUser: {
|
|
||||||
admin: false,
|
|
||||||
developer: false,
|
|
||||||
owner: false,
|
|
||||||
student: false,
|
|
||||||
teacher: false,
|
|
||||||
},
|
|
||||||
deleteUser: {
|
|
||||||
admin: false,
|
|
||||||
developer: false,
|
|
||||||
owner: false,
|
|
||||||
student: false,
|
|
||||||
teacher: false,
|
|
||||||
},
|
|
||||||
manageUser: {
|
|
||||||
admin: false,
|
|
||||||
developer: false,
|
|
||||||
owner: false,
|
|
||||||
student: false,
|
|
||||||
teacher: false,
|
|
||||||
},
|
|
||||||
viewUsers: {
|
|
||||||
admin: false,
|
|
||||||
developer: false,
|
|
||||||
owner: false,
|
|
||||||
student: false,
|
|
||||||
teacher: false,
|
|
||||||
},
|
|
||||||
createClass: false,
|
|
||||||
deleteClass: false,
|
|
||||||
manageClass: false,
|
|
||||||
viewStats: true,
|
|
||||||
viewUserStats: false,
|
|
||||||
viewClassStats: false,
|
|
||||||
},
|
|
||||||
teacher: {
|
|
||||||
createUser: {
|
|
||||||
admin: false,
|
|
||||||
developer: false,
|
|
||||||
owner: false,
|
|
||||||
student: true,
|
|
||||||
teacher: false,
|
|
||||||
},
|
|
||||||
deleteUser: {
|
|
||||||
admin: false,
|
|
||||||
developer: false,
|
|
||||||
owner: false,
|
|
||||||
student: true,
|
|
||||||
teacher: false,
|
|
||||||
},
|
|
||||||
manageUser: {
|
|
||||||
admin: false,
|
|
||||||
developer: false,
|
|
||||||
owner: false,
|
|
||||||
student: true,
|
|
||||||
teacher: false,
|
|
||||||
},
|
|
||||||
viewUsers: {
|
|
||||||
admin: false,
|
|
||||||
developer: false,
|
|
||||||
owner: false,
|
|
||||||
student: true,
|
|
||||||
teacher: false,
|
|
||||||
},
|
|
||||||
createClass: true,
|
|
||||||
deleteClass: true,
|
|
||||||
manageClass: true,
|
|
||||||
viewStats: true,
|
|
||||||
viewUserStats: true,
|
|
||||||
viewClassStats: true,
|
|
||||||
},
|
|
||||||
admin: {
|
|
||||||
createUser: {
|
|
||||||
admin: false,
|
|
||||||
developer: false,
|
|
||||||
owner: false,
|
|
||||||
student: true,
|
|
||||||
teacher: true,
|
|
||||||
},
|
|
||||||
deleteUser: {
|
|
||||||
admin: false,
|
|
||||||
developer: false,
|
|
||||||
owner: false,
|
|
||||||
student: true,
|
|
||||||
teacher: true,
|
|
||||||
},
|
|
||||||
manageUser: {
|
|
||||||
admin: false,
|
|
||||||
developer: false,
|
|
||||||
owner: false,
|
|
||||||
student: true,
|
|
||||||
teacher: true,
|
|
||||||
},
|
|
||||||
viewUsers: {
|
|
||||||
admin: false,
|
|
||||||
developer: false,
|
|
||||||
owner: false,
|
|
||||||
student: true,
|
|
||||||
teacher: true,
|
|
||||||
},
|
|
||||||
createClass: true,
|
|
||||||
deleteClass: true,
|
|
||||||
manageClass: true,
|
|
||||||
viewStats: true,
|
|
||||||
viewUserStats: true,
|
|
||||||
viewClassStats: true,
|
|
||||||
},
|
|
||||||
owner: {
|
|
||||||
createUser: {
|
|
||||||
admin: true,
|
|
||||||
developer: false,
|
|
||||||
owner: false,
|
|
||||||
student: true,
|
|
||||||
teacher: true,
|
|
||||||
},
|
|
||||||
deleteUser: {
|
|
||||||
admin: true,
|
|
||||||
developer: false,
|
|
||||||
owner: false,
|
|
||||||
student: true,
|
|
||||||
teacher: true,
|
|
||||||
},
|
|
||||||
manageUser: {
|
|
||||||
admin: true,
|
|
||||||
developer: false,
|
|
||||||
owner: false,
|
|
||||||
student: true,
|
|
||||||
teacher: true,
|
|
||||||
},
|
|
||||||
viewUsers: {
|
|
||||||
admin: true,
|
|
||||||
developer: false,
|
|
||||||
owner: false,
|
|
||||||
student: true,
|
|
||||||
teacher: true,
|
|
||||||
},
|
|
||||||
createClass: true,
|
|
||||||
deleteClass: true,
|
|
||||||
manageClass: true,
|
|
||||||
viewStats: true,
|
|
||||||
viewUserStats: true,
|
|
||||||
viewClassStats: true,
|
|
||||||
},
|
|
||||||
developer: {
|
|
||||||
createUser: {
|
|
||||||
admin: true,
|
|
||||||
developer: true,
|
|
||||||
owner: true,
|
|
||||||
student: true,
|
|
||||||
teacher: true,
|
|
||||||
},
|
|
||||||
deleteUser: {
|
|
||||||
admin: true,
|
|
||||||
developer: true,
|
|
||||||
owner: true,
|
|
||||||
student: true,
|
|
||||||
teacher: true,
|
|
||||||
},
|
|
||||||
manageUser: {
|
|
||||||
admin: true,
|
|
||||||
developer: true,
|
|
||||||
owner: true,
|
|
||||||
student: true,
|
|
||||||
teacher: true,
|
|
||||||
},
|
|
||||||
viewUsers: {
|
|
||||||
admin: true,
|
|
||||||
developer: true,
|
|
||||||
owner: true,
|
|
||||||
student: true,
|
|
||||||
teacher: true,
|
|
||||||
},
|
|
||||||
createClass: true,
|
|
||||||
deleteClass: true,
|
|
||||||
manageClass: true,
|
|
||||||
viewStats: true,
|
|
||||||
viewUserStats: true,
|
|
||||||
viewClassStats: true,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function getPermissions(user: User) {
|
|
||||||
return permissions[user.type];
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user