• Как в ролевой модели (User - Roles) реализовать бан?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Вы - описали роли пользователя.
    Хотите - создать роли ACL (access level system), понижающие действующие привелегии.

    Сначала создайте ACL под все роли пользователей, что Вы описали (USER_ACL, MODERATOR_ACL и т.д.). Это таблица с привелегиями (битовая "маска" со степенями двойки): 1,2,4,8,16,32,64 и т.д. Сумма этих значений даёт число, однозначно определяющее ACL для доступа к различным функциям.

    Затем - создайте различные BAN-наборы (ACL по тем же кретериям).
    BAN_CHAT, BAN_EDIT, BAN_DELETE, BAN_REOWNER и т.д.

    И из действующего *_ACL вычитаете BAN_*.

    Полученное - и будет действующие ACL, но с ограничениями по BAN-маске.
    (меньше или равно 0 - значит вообще без каких-либо прав)
    Ответ написан
    3 комментария