@jazzus

Зачем нужны статусы модерации юзера если есть роли?

Делаю модерацию пользователей. Впервые, поэтому смотрел примеры-рассуждения в сети. А там везде status 0/1. Ну я тоже сделал т.к. не стадо. Думаю 0 – заблокирован, 1 активен. Что может быть проще. В процессе чуть усложнил – сделал таблицу для статусов и модерации со связью ит.д. Сейчас дошел до реализации и думаю – не погорячился ли я? С того ли конца начал? Может вначале стоило подумать?)) У меня ведь уже реализованы роли доступа с пермишенами. И мне все равно нужно менять доступ. Т.е. создавать роль для, например неактивен или на модерации. Чтобы права изменить. И тогда смысл этих ролевых игр со статусами. Получается дублирование контента. Или не получается? И я не знаю то чего не знаю и статусы нужны. В общем, я в замешательстве) Буду благодарен за инфу. Кто имел опыт такой реализации. Как вы делаете это? Нужны ли статусы если роли есть и зачем.
  • Вопрос задан
  • 271 просмотр
Решения вопроса 3
Decadal
@Decadal
Статус пользователя это не то же самое что и пермишены. Это ограничения другого рода. Возможно, вы сделаете суперадмина а потом деактивируете его при помощи статуса. Несмотря на то что все пермиссии остались, зайти под ним никто не сможет. А потом надо будет что-то глянуть от суперадмина и вы консольной командой его включите обратно.
Тогда как пермиссии отображают обычный сценарий работы. Это разъяснения, кому, что и где можно делать. А раз так, иерархия таких прав может настраиваться долго и тщательным образом для каждого юзера.
И потом, если появились подозрения что пользователь мошенник, вы просто отключаете его профиль, проверяете, а потом снова включаете его. Деактивация при помощи пермиссий это болезненно.
Ответ написан
@vism
Нужно думать сущностями, логическими блоками.

Пермишены и роли - это у вас разграничение того, чтоб может пользователь делать и куда он может ходить. Это как карточка доступа в офисе, в какие кабинеты она срабатывает и какие шкафчики открывает.

Блокировка
а) если это некая блокировка, которая не дает пользователю никуда ходить кроме столовой и коридоров - то это Роли и Пермишены. При том можно сделать проверку при получении ролей. Если блокирован - пермишены не грузим из БД, чтоб никуда не было доступа. А если допустим супер админ - даем все пермишены.
Но это говнокод.
Грамотно - если у вас стоит задача сделать блокировку, то сделать у ролей/пермишенов флаг activ(1/0). И если блокируется доступ управлять флагами. Вот и логично все. Можно закрывать доступ временно и частично к разделам.
б) Если блокировка это фейс контроль на входе, блокировка не доступа а именно самого юзера как сущности, это флаг а таблице который отрубает вобще возможность залогиниться.
Ответ написан
webinar
@webinar Куратор тега Веб-разработка
Учим yii: https://youtu.be/-WRMlGHLgRg
Думаю что при наличии ролей, отдельно хранить признак модерации не нужно, так как может быть роль "новый юзер", "юзер", "админ", "забаненный юзер" и т.д. Это позволяет оставить один механизм фильтрации доступа на базе ролей и не лепить сверху еще проверку статуса, да и с точки зрения оптимального хранения в БД, раз уж есть RBAC, зачем еще 1 столбец в таблице юзер или даже отдельная таблица?
Я думаю это рудимент пришедший с доООПшных систем. Многие просто так привыкли и тянут за собой это. Или же RBAC часто ставится не сразу и получается вначале система с контролем доступа по статусу, а потом сверху прикручивают rbac, а статус оставляют.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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