<?xml version="1.0" encoding="utf-8"?>
<s1 title="HelpOnConfiguration/SecurityPolicy"><p></p>
<s2 id="Security Policy Configuration" title="Security Policy Configuration">
<p><p>Contents</p>
<ol><li>
<link anchor="S">Security Policy Configuration</link><ol><li>
<link anchor="M">Mechanics</link></li>
<li>
<link anchor="A">Anti-Spam protection</link></li>
<li>
<link anchor="S-1">SSL-only Write</link></li>
<li>
<link anchor="S-2">Samples</link></li>
<li>
<link anchor="S-3">See also</link></li>
</ol>
</li>
</ol>
<p> </p>
<p><code>SecurityPolicy</code> is a config option that allows wiki admins to dynamically enable or disable certain key actions in a <jump href="/wiki/MoinMoin">MoinMoin</jump> wiki, most notably editing and deleting content. See also <jump href="/wiki/HelpOnAccessControlLists">HelpOnAccessControlLists</jump> for an easier way. </p>
<p></p>
<s3 id="Mechanics" title="Mechanics">
<p>Security restrictions in a <jump href="/wiki/MoinMoin">MoinMoin</jump> wiki work by the interface defined in the <code>MoinMoin.security</code> module. The <code>Permissions</code> class implements the basic interface for user permissions and system policy. If you want to define your own policy, inherit from that base class, so that when new permissions are defined, you get the defaults. </p>
<p>Then either assign your new class to <code>Config.SecurityPolicy</code> in <code>wikiconfig.py</code> (and I mean the class, not an instance of it), or define your class as a member of <code>class Config</code> in <code>wikiconfig.py</code> and name it <code>SecurityPolicy</code>. </p>
<p></p>
</s3>
<s3 id="Anti-Spam protection" title="Anti-Spam protection">
<p>If you enable the &quot;antispam&quot; utility your wiki will fetch the page <jump href="/wiki/BadContent">BadContent</jump> from <interwiki wiki="MoinMaster" pagename="BadContent">BadContent</interwiki> and keep it automatically in sync. Do not edit it, because your edits will be overwritten. </p>
<p></p>
<source><![CDATA[    # add this within Config class, be careful with indentation:
    from MoinMoin.security.antispam import SecurityPolicy]]></source><p></p>
</s3>
<s3 id="SSL-only Write" title="SSL-only Write">
<p>If you want for security reasons that users do not edit the wiki without using SSL you should add: </p>
<p></p>
<source><![CDATA[    # add this within Config class, be careful with indentation:
    from MoinMoin.security import Permissions
    class SecurityPolicy(Permissions):
        def write(self, pagename):
            # make wiki only writeable via SSL
            return (self.request.is_secure
                    and Permissions.write(self, pagename)]]></source><p></p>
</s3>
<s3 id="Samples" title="Samples">
<p>For samples on using this mechanism, see <interwiki wiki="MoinMoin" pagename="SecurityPolicy">SecurityPolicy</interwiki>. </p>
<p></p>
</s3>
<s3 id="See also" title="See also">
<ul><li><p><jump href="/wiki/HelpOnAutoAdmin">HelpOnAutoAdmin</jump> when you want to give some users or user groups admin rights on some pages. </p>
</li>
</ul>
</s3></s2></s1>