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