mirror of
https://github.com/sergeyyarkov/educt-server.git
synced 2026-10-11 18:29:15 +03:00
37 lines
823 B
TypeScript
37 lines
823 B
TypeScript
import { BasePolicy } from '@ioc:Adonis/Addons/Bouncer';
|
|
|
|
/**
|
|
* Models
|
|
*/
|
|
import User from 'App/Models/User';
|
|
|
|
/**
|
|
* Helpers
|
|
*/
|
|
import RoleHelper from 'App/Helpers/RoleHelper';
|
|
|
|
/**
|
|
* Datatypes
|
|
*/
|
|
import RoleEnum from 'App/Datatypes/Enums/RoleEnum';
|
|
|
|
export default class RolePolicy extends BasePolicy {
|
|
public async manage(user: User, roles: Array<RoleEnum>) {
|
|
await user.load('roles');
|
|
|
|
const isAdmin = RoleHelper.userContainRoles(user.roles, [RoleEnum.ADMIN]);
|
|
const isTeacher = RoleHelper.userContainRoles(user.roles, [RoleEnum.TEACHER]);
|
|
|
|
if (isAdmin) {
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* User with role `TEACHER` can manage only user with `STUDENT` role
|
|
*/
|
|
if (!(roles.includes(RoleEnum.TEACHER) || roles.includes(RoleEnum.ADMIN)) && isTeacher) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|