Ролевая модель students
Ролевая модель применяется только в API, в GUI её нет. Сделана через заголовки. Если они не указаны (и есть только токен авторизации), то всё работает как будто и нет никаких ограничений.
1. student-id
Если указать заголовок студента, он может видеть:
Среди студентов только себя
Всех тренеров
Только свои потоки курсов видит
Все курсы, которые course, без цены
Редактировать только себя, курсы и flow не может.
НЕ может видеть:
В Course — поле price
В Flow — поля graduated_count, refunded_count, students_count
Пример, студент 1 вызывает вот так
query {
getAllFlowsByStudent(student_id: 1) {
graduate
id_flow
flow {
graduated_count
}
}
}
Тут он получает ошибку, что значение graduated_count ему недоступно.
А если убрать блок flow, то запрос сработает.
2. trainer-id
Видит всё.
Редактирует только себя:
graduateStudents
recordOnTheCource
refundOnTheCource
addFlow, если внутри его trainer_id
3. Роли
Заголовок role, значения:
viewer — может просматривать все данные, менять не может
student_editor — может смотреть и менять данные по студентам (удаляет тоже он)
trainer_editor — смотрит и редактирует только тренеров
course_editor — смотрит и редактирует курсы, потоки (записывает студентов) тоже он, менять тренера тоже может
Роли можно указать через запятую и они применятся “и та, и другая”. Если не указывать, то как сейчас, можем вообще все.
Если вместе с Trainer_id или Student_id, то накладываются еще и ограничения по тем заголовкам.