202 lines
3.4 KiB
TypeScript
202 lines
3.4 KiB
TypeScript
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];
|
|
}
|