@ukoHka
Всего понемногу

Как правильно настроить AccessControl в Yii2?

В проекте предполагается несколько групп пользователей. Под группами подразумевается не Админ, Модер и т.д., а несколько пользователей, работающих над одной задачей. То есть во всем проекте есть одни и те же действия, которые пользователи могут производить только в отношении своей группы. Например, группа А может добавлять новости, которые будут видны только участникам этой группы, а группа Б может добавлять новости только для своей группы. Конечно все новости находятся в одной таблице в БД. В группах тоже есть уровни доступа, Админ, Модер и т.д.
Проблема в том, что я не до конца понимаю принцип работы AccessControl и поэтому не могу правильно прописать правила.
Насколько я понял, при createPermission('action') создается правило для доступа к определенному действию в выбранном контролере, а при создании правила через Rule() в каждом действии (кроме login, logout, profile, signUp) надо проверять через can(), отправляя в params['group_id']group_id текущего пользователя.
Есть ли какие-то другие способы попроще? Прописать group_id в behaviors или напрямую в CustomRule()?
  • Вопрос задан
  • 684 просмотра
Пригласить эксперта
Ответы на вопрос 1
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
Во-первых, вот ссылка на официальную документацию.
Так же есть хороший блог, где автор блога всё подробно разжёвывает и кладёт в рот.
От себя могу добавить только одно.
Если у Вас есть id группы, так же есть новость, у которой есть id группы, к которой она принадлежит и есть пользователь у которого есть id той же группы, на которую он подписан, то в чём проблема? Разделяйте всё по id группы. Проверяйте, в какую группу входит пользователь и по id группы отдавайте новость. Если пользователь добавляет новость, то проверяйте в какую группу входит пользователь и значит id этой группы приписывайте к новости.
Я бы сделала так. В остальном - RBAC
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы