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]; }