evennia/docs/3.x/api/evennia.web.api.permissions.html
2023-12-21 00:12:31 +01:00

247 lines
No EOL
14 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>evennia.web.api.permissions &#8212; Evennia 3.x documentation</title>
<link rel="stylesheet" href="../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="evennia.web.api.root" href="evennia.web.api.root.html" />
<link rel="prev" title="evennia.web.api.filters" href="evennia.web.api.filters.html" />
</head><body>
<div class="admonition important">
<p class="first admonition-title">Note</p>
<p class="last">You are reading an old version of the Evennia documentation. <a href="https://www.evennia.com/docs/latest/index.html">The latest version is here</a></p>.
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.web.api.root.html" title="evennia.web.api.root"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="evennia.web.api.filters.html" title="evennia.web.api.filters"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 3.x</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.web.html" >evennia.web</a> &#187;</li>
<li class="nav-item nav-item-5"><a href="evennia.web.api.html" accesskey="U">evennia.web.api</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.web.api.permissions</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<h4>Previous topic</h4>
<p class="topless"><a href="evennia.web.api.filters.html"
title="previous chapter">evennia.web.api.filters</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="evennia.web.api.root.html"
title="next chapter">evennia.web.api.root</a></p>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.web.api.permissions.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com/docs/latest/index.html">Documentation Top</a> </li>
<li><a href="https://www.evennia.com">Evennia Home</a> </li>
<li><a href="https://github.com/evennia/evennia">Github</a> </li>
<li><a href="http://games.evennia.com">Game Index</a> </li>
<li>
<a href="https://discord.gg/AJJpcRUhtF">Discord</a> -
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
<a href="https://evennia.blogspot.com/">Blog</a>
</li>
</ul>
</div>
</div>
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.web.api.permissions">
<span id="evennia-web-api-permissions"></span><h1>evennia.web.api.permissions<a class="headerlink" href="#module-evennia.web.api.permissions" title="Permalink to this headline"></a></h1>
<p>Sets up an api-access permission check using the in-game permission hierarchy.</p>
<dl class="py class">
<dt id="evennia.web.api.permissions.EvenniaPermission">
<em class="property">class </em><code class="sig-prename descclassname">evennia.web.api.permissions.</code><code class="sig-name descname">EvenniaPermission</code><a class="reference internal" href="../_modules/evennia/web/api/permissions.html#EvenniaPermission"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.web.api.permissions.EvenniaPermission" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">rest_framework.permissions.BasePermission</span></code></p>
<p>A Django Rest Framework permission class that allows us to use Evennias
permission structure. Based on the action in a given view, well check a
corresponding Evennia access/lock check.</p>
<dl class="py attribute">
<dt id="evennia.web.api.permissions.EvenniaPermission.MINIMUM_LIST_PERMISSION">
<code class="sig-name descname">MINIMUM_LIST_PERMISSION</code><em class="property"> = 'builder'</em><a class="headerlink" href="#evennia.web.api.permissions.EvenniaPermission.MINIMUM_LIST_PERMISSION" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.web.api.permissions.EvenniaPermission.MINIMUM_CREATE_PERMISSION">
<code class="sig-name descname">MINIMUM_CREATE_PERMISSION</code><em class="property"> = 'builder'</em><a class="headerlink" href="#evennia.web.api.permissions.EvenniaPermission.MINIMUM_CREATE_PERMISSION" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.web.api.permissions.EvenniaPermission.view_locks">
<code class="sig-name descname">view_locks</code><em class="property"> = ['examine']</em><a class="headerlink" href="#evennia.web.api.permissions.EvenniaPermission.view_locks" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.web.api.permissions.EvenniaPermission.destroy_locks">
<code class="sig-name descname">destroy_locks</code><em class="property"> = ['delete']</em><a class="headerlink" href="#evennia.web.api.permissions.EvenniaPermission.destroy_locks" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.web.api.permissions.EvenniaPermission.update_locks">
<code class="sig-name descname">update_locks</code><em class="property"> = ['control', 'edit']</em><a class="headerlink" href="#evennia.web.api.permissions.EvenniaPermission.update_locks" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.web.api.permissions.EvenniaPermission.has_permission">
<code class="sig-name descname">has_permission</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">request</span></em>, <em class="sig-param"><span class="n">view</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/web/api/permissions.html#EvenniaPermission.has_permission"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.web.api.permissions.EvenniaPermission.has_permission" title="Permalink to this definition"></a></dt>
<dd><p>Checks for permissions</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>request</strong> (<em>Request</em>) The incoming request object.</p></li>
<li><p><strong>view</strong> (<em>View</em>) The django view we are checking permission for.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>bool</em> If permission is granted or not. If we return False here, a PermissionDenied
error will be raised from the view.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>This method is a check that always happens first. If theres an object involved,
such as with retrieve, update, or delete, then the has_object_permission method
is called after this, assuming this returns <strong>True</strong>.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.web.api.permissions.EvenniaPermission.check_locks">
<em class="property">static </em><code class="sig-name descname">check_locks</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">obj</span></em>, <em class="sig-param"><span class="n">user</span></em>, <em class="sig-param"><span class="n">locks</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/web/api/permissions.html#EvenniaPermission.check_locks"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.web.api.permissions.EvenniaPermission.check_locks" title="Permalink to this definition"></a></dt>
<dd><p>Checks access for user for object with given locks
:param obj: Object instance were checking
:param user: User who were checking permissions
:type user: Account
:param locks: list of lockstrings
:type locks: list</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><em>bool</em> True if they have access, False if they dont</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.web.api.permissions.EvenniaPermission.has_object_permission">
<code class="sig-name descname">has_object_permission</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">request</span></em>, <em class="sig-param"><span class="n">view</span></em>, <em class="sig-param"><span class="n">obj</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/web/api/permissions.html#EvenniaPermission.has_object_permission"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.web.api.permissions.EvenniaPermission.has_object_permission" title="Permalink to this definition"></a></dt>
<dd><p>Checks object-level permissions after has_permission</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>request</strong> (<em>Request</em>) The incoming request object.</p></li>
<li><p><strong>view</strong> (<em>View</em>) The django view we are checking permission for.</p></li>
<li><p><strong>obj</strong> Object were checking object-level permissions for</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>bool</em> If permission is granted or not. If we return False here, a PermissionDenied
error will be raised from the view.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>This method assumes that has_permission has already returned True. We check
equivalent Evennia permissions in the request.user to determine if they can
complete the action.</p>
</dd></dl>
</dd></dl>
</section>
</div>
</div>
</div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.web.api.root.html" title="evennia.web.api.root"
>next</a> |</li>
<li class="right" >
<a href="evennia.web.api.filters.html" title="evennia.web.api.filters"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 3.x</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.web.html" >evennia.web</a> &#187;</li>
<li class="nav-item nav-item-5"><a href="evennia.web.api.html" >evennia.web.api</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.web.api.permissions</a></li>
</ul>
</div>
<div class="admonition important">
<p class="first admonition-title">Note</p>
<p class="last">You are reading an old version of the Evennia documentation. <a href="https://www.evennia.com/docs/latest/index.html">The latest version is here</a></p>.
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2023, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>