Параметр SecurityPolicy конфигурации позволяет администраторам вики динамически определять права на различные ключевые действия на вики на базе МойнМойн, в частности, редактирование и удаление содержимого. Также см. ПомощьПоСпискамДоступа для простых случаев.

Механизм работы

Взаимодействие с правами доступа на вики на базе МойнМойн происходит посредством интерфейса, определённого в модуле MoinMoin.securty. Класс Permissions реализует базовый интерфейс для прав доступа пользователей и системной политики безопасности. В случае необходимости определения собственной политики, необходимо унаследоваться от данного класса; это приведёт к тому, что в случае появления новых прав будут работать правила по умолчанию.

После написания класса, реализующего новую политику безопасности, необходимо присвоить его (класс, не экземпляр класса) в качестве значения параметру Config.SecurityPolicy в wikiconfig.py или определить класс как член класса Config в wikiconfig.py и назвать его SecurityPolicy.

Защита от спама

При включении функции «antispam» вики будет периодически запрашивать страницу BadContent c BadContent и поддерживать её в актуальном состоянии. Не следует редактировать её, так как правки будут утерены при очередной синхронизации (для задания собственных чёрных списков следует использовать страницу LocalBadContent)

   1     # для включения антиспама достаточно добавить строку ниже в класс Config, соблюдая отступы:
   2     from MoinMoin.security.antispam import SecurityPolicy

Подробнее о защите от спама см. КакБоротьсяСоСпамом.

Редактирование только по SSL

Если в целях безопасности необходимо запретить пользователям редактировать вики в случае неиспользования SSL, достаточно добавить:

   1     # добавьте код ниже в класс Config, соблюдая отступы:
   2     from MoinMoin.security import Permissions
   3     class SecurityPolicy(Permissions):
   4         def write(self, pagename):
   5             # привилегия на запись доступна только при использовании SSL
   6             return self.request.is_ssl
   7                    and Permissions.write(self, pagename)

Примеры

Примеры использования данного механизма доступны на SecurityPolicy.

См. также