mirror of
https://github.com/sergeyyarkov/educt-server.git
synced 2026-10-11 02:09:07 +03:00
36 lines
809 B
TypeScript
36 lines
809 B
TypeScript
import { BasePolicy } from '@ioc:Adonis/Addons/Bouncer';
|
|
|
|
/**
|
|
* Helpers
|
|
*/
|
|
import RoleHelper from 'App/Helpers/RoleHelper';
|
|
|
|
/**
|
|
* Models
|
|
*/
|
|
import Lesson from 'App/Models/Lesson';
|
|
import User from 'App/Models/User';
|
|
|
|
/**
|
|
* Datatypes
|
|
*/
|
|
import RoleEnum from 'App/Datatypes/Enums/RoleEnum';
|
|
|
|
export default class LessonPolicy extends BasePolicy {
|
|
public async view(user: User, lesson: Lesson) {
|
|
/**
|
|
* Load required data to check permissions
|
|
*/
|
|
await user.load(loader => loader.load('roles').load('courses'));
|
|
await lesson.load('course');
|
|
|
|
const isAdminOrTeacher = RoleHelper.userContainRoles(user.roles, [RoleEnum.ADMIN, RoleEnum.TEACHER]);
|
|
|
|
if (isAdminOrTeacher) {
|
|
return true;
|
|
}
|
|
|
|
return !!user.courses.find(course => course.id === lesson.course.id);
|
|
}
|
|
}
|