Вы - описали роли пользователя.
Хотите - создать роли 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 - значит вообще без каких-либо прав)