Роли - это вроде следующих: "Разрешено заходить в админчасть", "Разрешено редактировать новости", "Разрешено оставлять комментарии", "Разрешено удалять свои комментарии", "Разрешено удалять любые комментарии", "Разрешено входить в модераторский раздел", "Запрещено вставлять картинки" и т.д.
Примеры групп: "Администраторы", "Гости", "Активисты", "Модераторы".
Группе "Администраторы" можно назначить следующие роли: "Разрешено заходить в админчасть", "Разрешено редактировать новости", "Разрешено оставлять комментарии", "Разрешено удалять свои комментарии", "Разрешено удалять любые комментарии", "Разрешено входить в модераторский раздел".
Группе "Гости" можно назначить следующие роли: "Разрешено оставлять комментарии", "Запрещено вставлять картинки".
Группе "Активисты" можно назначить следующие роли: "Разрешено оставлять комментарии", "Разрешено удалять свои комментарии".
Группе "Модераторы" можно назначить следующие роли: "Разрешено оставлять комментарии", "Разрешено удалять свои комментарии", "Разрешено удалять любые комментарии", "Разрешено входить в модераторский раздел".
Надеюсь, понятно зачем это нужно.
Во-первых, исчезает необходимость выставлять кучу пермишенов каждому отдельному пользователю.
Во-вторых, в случае нужды эту систему легко дополнить или изменить.
Если система прав очень сложна, то можно еще ввести наследование групп и/или ролей. Хотя я еще никогда не сталкивался с такой необходимостью.
Далее. Можно создать роль: "Разрешено модерировать форум с id=8". Но в описанную мной структуру таблиц ее не уложешь (нет смысла создавать особую группу модераторов для каждого форума). Отслеживание таких ролей следует поручать скрипту, в котором реализуешь модерацию.
Чтобы это стало возможным, твой класс для управления доступом должен быть достаточно гибким. Пример такого класса: Zend_Acl. Могу также дать свою реализацию. Но лучше тебе помучиться и написать свою. Иначе будет очень трудно понять, как с этим работать.