Я планирую расширить систему, которая поможет мне отмечать студентов на лабораторных занятиях по различным курсам, на которые они записаны. У меня работает базовая версия системы, но для нее требуется более совершенная система разрешений.
У меня есть пользователи и курсы. То, что я хочу, - это возможность иметь такие роли, как «Координатор» и «Грейдер», но на основе курса.
Таким образом, конкретный пользователь может быть «Грейдер на курсе1» и «Координатор на курсе2»
Роль «Грейдер на курсе X» будет иметь базовые разрешения «Может просматривать курс X», «Может оценить курс X» и т. Д. «Координатор на курсе X» может иметь другие разрешения, такие как «Может записывать студентов на курс». X».
Таким образом, мои роли и полномочия в некотором роде параметризованы курсами.
С пакетом spatie / laravel-Разрешения я понимаю, что могу создавать такие роли, как Грейдер и Координатор (вместе с базовыми разрешениями). Но это не позволило бы мне сделать конкретного пользователя грейдером на одном курсе, но не на всех других.
Комбинируя этот пакет (spatie / laravel-Разрешение) с политиками Laravels, я думаю, я подхожу ближе. Политики параметризованы моделями (т. Е. Модель курса в моем случае). Но я не понимаю, как политики будут связываться с ролями и разрешениями, если они не слишком параметризованы.
Есть идеи о том, как решить эту проблему?
Один из способов, о котором я думал, - это иметь такие роли, как "координатор_курс1", "координатор_курс2", "координатор_курс3" ... и разрешения, такие как "can_view_course1", "can_view_course2", "can_view_course3", ... но это чувствуется как плохой выбор.
Любой совет будет приветствоваться.