Ролевая модель 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, то накладываются еще и ограничения по тем заголовкам.