Роли и разрешения 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",... Но это похоже на плохой выбор.

Любой совет будет приветствоваться.

0 ответов

Другие вопросы по тегам