Немного проясните про правила в RBAC

Всё про контроль доступа пользователей: фильтры, RBAC, проверки
Закрыто
Аватара пользователя
girmate
Сообщения: 1534
Зарегистрирован: 2015.10.27, 12:52

Немного проясните про правила в RBAC

Сообщение girmate »

Кода не будет, продумываю архитектуру ролей и разрешений.

Обычный сайт: пользователи, модераторы, админы ну и все остальные (гости).
Планируется реализовать чат для всех. Но в чате предусмотрен МУТ(mute). То есть если на пользователя наложен мут, то он не сможет писать в чат какое-то время (10 минут, 1 час, 10 дней и так далее) за какое-то нарушение - нецензурщина, реклама, флуд и так далее.

Если я правильно понял, то мне нужно в разрешении "Писать в чат" добавить правило, которое будет проверять может ли пользователь туда писать, то есть не наложен ли мут? Значит нужно дополнительно создать таблицу MUTE для пользователей, в которую заносить пользователей и время до которого наложен мут. А правилом проверять его наличие пользователя в этой таблице и время. Если время истекло - значит вернуть все ок, а в правиле (я пока так думаю) - удалять пользователя из таблицы МУТа.

То есть правило проверяет есть ли пользователь такой-то в таблице МУТ, если нет - вернуть true, если есть - проверить истекло ли время, если истекло то прямо в правиле удалить его из этой таблицы.

Я правильно понимаю как это нужно сделать? Или по-другому принято?
Осторожно! Вы общаетесь с новичком ;)
Аватара пользователя
za4me
Сообщения: 152
Зарегистрирован: 2016.06.26, 15:29
Контактная информация:

Re: Немного проясните про правила в RBAC

Сообщение za4me »

girmate писал(а):То есть правило проверяет есть ли пользователь такой-то в таблице МУТ, если нет - вернуть true, если есть - проверить истекло ли время, если истекло то прямо в правиле удалить его из этой таблицы.
Проверка будет происходить при входе пользователя в чат? Можно не пускать всех кто есть в таблице МУТ, а удаление повесить на крон.
Аватара пользователя
girmate
Сообщения: 1534
Зарегистрирован: 2015.10.27, 12:52

Re: Немного проясните про правила в RBAC

Сообщение girmate »

Нет. Чат будет виден как виджет и любой желающий может туда писать, кроме гостей.
Осторожно! Вы общаетесь с новичком ;)
Аватара пользователя
girmate
Сообщения: 1534
Зарегистрирован: 2015.10.27, 12:52

Re: Немного проясните про правила в RBAC

Сообщение girmate »

za4me писал(а):
girmate писал(а): а удаление повесить на крон.
Да, крон будет только для удаления старых записей, чтобы освободить БД (например, раз в сутки).
Поэтому и уточняю, что хочу удалять пользователя из таблицы МУТ в правиле, если время истекло.
Осторожно! Вы общаетесь с новичком ;)
Аватара пользователя
za4me
Сообщения: 152
Зарегистрирован: 2016.06.26, 15:29
Контактная информация:

Re: Немного проясните про правила в RBAC

Сообщение za4me »

girmate писал(а):
za4me писал(а):
girmate писал(а): а удаление повесить на крон.
Да, крон будет только для удаления старых записей, чтобы освободить БД (например, раз в сутки).
Поэтому и уточняю, что хочу удалять пользователя из таблицы МУТ в правиле, если время истекло.
т.е. Запись о пользователе с истекшим баном будет хранится до тех пор пока он снова не зайдет в чат. А если не зайдет? Думаю что данные строки в БД будут вам не к чему.
Аватара пользователя
girmate
Сообщения: 1534
Зарегистрирован: 2015.10.27, 12:52

Re: Немного проясните про правила в RBAC

Сообщение girmate »

Ну так для этого же и будет крон. Я же написал:
Да, крон будет только для удаления старых записей, чтобы освободить БД (например, раз в сутки).
Осторожно! Вы общаетесь с новичком ;)
chesar
Сообщения: 514
Зарегистрирован: 2013.04.10, 17:49

Re: Немного проясните про правила в RBAC

Сообщение chesar »

Не надо делать отдельную таблицу. Достаточно поля mutedAt. Если значение больше текущего времени - доступ запрещен. Отдельная таблица потребуется в случае, когда надо будет сохранять все записи, когда и насколько пользователь был заблокирован.
Аватара пользователя
girmate
Сообщения: 1534
Зарегистрирован: 2015.10.27, 12:52

Re: Немного проясните про правила в RBAC

Сообщение girmate »

chesar писал(а):Не надо делать отдельную таблицу. Достаточно поля mutedAt. Если значение больше текущего времени - доступ запрещен. Отдельная таблица потребуется в случае, когда надо будет сохранять все записи, когда и насколько пользователь был заблокирован.
Тогда как организовать сам чат?
Я думаю будет часа таблица chat (id, user_id, text, created_at) и таблица muted (id, user_id, mute_time). А Вы предложили добавить поле в таблицу основного чата. Но тогда сам чат не очистишь от старых записей, ведь нужно будет хранить этот mute_time в ней.
Осторожно! Вы общаетесь с новичком ;)
Аватара пользователя
ElisDN
Сообщения: 5841
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Немного проясните про правила в RBAC

Сообщение ElisDN »

girmate писал(а):А Вы предложили добавить поле в таблицу основного чата.
В таблицу пользователя, а не чата.
Аватара пользователя
girmate
Сообщения: 1534
Зарегистрирован: 2015.10.27, 12:52

Re: Немного проясните про правила в RBAC

Сообщение girmate »

ElisDN писал(а):
girmate писал(а):А Вы предложили добавить поле в таблицу основного чата.
В таблицу пользователя, а не чата.
Невыгодно. В проекте ему еще много где нельзя "говорить". То есть есть основной чат, есть сообщения победителя, и так далее. Сильно большую таблицу тягать придется. Но я еще подумаю.
Осторожно! Вы общаетесь с новичком ;)
Закрыто