Automated deployment: Tue Sep 21 06:29:27 UTC 2021 eb47dc8e75

This commit is contained in:
frankie567
2021-09-21 06:29:27 +00:00
parent a755a77f96
commit 78a8b0134b
38 changed files with 140 additions and 96 deletions

View File

@@ -7,9 +7,9 @@
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<meta content="Ready-to-use and customizable users management for FastAPI" name="description"/>
<link href="../../favicon.png" rel="icon"/>
<meta content="mkdocs-1.2.2, mkdocs-material-7.2.7" name="generator"/>
<meta content="mkdocs-1.2.2, mkdocs-material-7.2.8" name="generator"/>
<title>Get current user - FastAPI Users</title>
<link href="../../assets/stylesheets/main.3c7cdd75.min.css" rel="stylesheet"/>
<link href="../../assets/stylesheets/main.92558b1b.min.css" rel="stylesheet"/>
<link href="../../assets/stylesheets/palette.3f5d1f46.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&amp;display=fallback" rel="stylesheet"/>
@@ -356,6 +356,11 @@
Get the current active superuser
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#dynamically-enable-authentication-backends">
Dynamically enable authentication backends
</a>
</li>
</ul>
</nav>
</li>
@@ -465,6 +470,11 @@
Get the current active superuser
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#dynamically-enable-authentication-backends">
Dynamically enable authentication backends
</a>
</li>
</ul>
</nav>
</li>
@@ -493,6 +503,7 @@
<li><code>active</code>: If <code>True</code>, throw <code>401 Unauthorized</code> if the authenticated user is inactive. Defaults to <code>False</code>.</li>
<li><code>verified</code>: If <code>True</code>, throw <code>403 Forbidden</code> if the authenticated user is not verified. Defaults to <code>False</code>.</li>
<li><code>superuser</code>: If <code>True</code>, throw <code>403 Forbidden</code> if the authenticated user is not a superuser. Defaults to <code>False</code>.</li>
<li><code>get_enabled_backends</code>: Optional dependency callable returning a list of enabled authentication backends. Useful if you want to dynamically enable some authentication backends based on external logic, like a configuration in database. By default, all specified authentication backends are enabled. <em>Please not however that every backends will appear in the OpenAPI documentation, as FastAPI resolves it statically.</em></li>
</ul>
<div class="admonition tip">
<p class="admonition-title">Create it once and reuse it</p>
@@ -529,6 +540,39 @@
<span class="k">def</span> <span class="nf">protected_route</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span> <span class="o">=</span> <span class="n">Depends</span><span class="p">(</span><span class="n">current_superuser</span><span class="p">)):</span>
<span class="k">return</span> <span class="sa">f</span><span class="s2">"Hello, </span><span class="si">{</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="si">}</span><span class="s2">"</span>
</code></pre></div>
<h3 id="dynamically-enable-authentication-backends">Dynamically enable authentication backends<a class="headerlink" href="#dynamically-enable-authentication-backends" title="Permanent link"></a></h3>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>This is an advanced feature for cases where you have several authentication backends that are enabled conditionally. In most cases, you won't need this option.</p>
</div>
<div class="highlight"><pre><span></span><code><span class="kn">from</span> <span class="nn">fastapi</span> <span class="kn">import</span> <span class="n">Request</span>
<span class="kn">from</span> <span class="nn">fastapi_users.authentication</span> <span class="kn">import</span> <span class="n">CookieAuthentication</span><span class="p">,</span> <span class="n">JWTAuthentication</span>
<span class="n">SECRET</span> <span class="o">=</span> <span class="s2">"SECRET"</span>
<span class="n">jwt_authentication</span> <span class="o">=</span> <span class="n">JWTAuthentication</span><span class="p">(</span><span class="n">secret</span><span class="o">=</span><span class="n">SECRET</span><span class="p">,</span> <span class="n">lifetime_seconds</span><span class="o">=</span><span class="mi">3600</span><span class="p">)</span>
<span class="n">cookie_authentication</span> <span class="o">=</span> <span class="n">CookieAuthentication</span><span class="p">(</span><span class="n">secret</span><span class="o">=</span><span class="n">SECRET</span><span class="p">,</span> <span class="n">lifetime_seconds</span><span class="o">=</span><span class="mi">3600</span><span class="p">)</span>
<span class="k">async</span> <span class="k">def</span> <span class="nf">get_enabled_backends</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">):</span>
<span class="sd">"""Return the enabled dependencies following custom logic."""</span>
<span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">url</span><span class="o">.</span><span class="n">path</span> <span class="o">==</span> <span class="s2">"/protected-route-only-jwt"</span><span class="p">:</span>
<span class="k">return</span> <span class="p">[</span><span class="n">jwt_authentication</span><span class="p">]</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="p">[</span><span class="n">cookie_authentication</span><span class="p">,</span> <span class="n">jwt_authentication</span><span class="p">]</span>
<span class="n">current_active_user</span> <span class="o">=</span> <span class="n">fastapi_users</span><span class="o">.</span><span class="n">current_user</span><span class="p">(</span><span class="n">active</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">get_enabled_backends</span><span class="o">=</span><span class="n">get_enabled_backends</span><span class="p">)</span>
<span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"/protected-route"</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">protected_route</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span> <span class="o">=</span> <span class="n">Depends</span><span class="p">(</span><span class="n">current_active_user</span><span class="p">)):</span>
<span class="k">return</span> <span class="sa">f</span><span class="s2">"Hello, </span><span class="si">{</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="si">}</span><span class="s2">. You are authenticated with a cookie or a JWT."</span>
<span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"/protected-route-only-jwt"</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">protected_route</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span> <span class="o">=</span> <span class="n">Depends</span><span class="p">(</span><span class="n">current_active_user</span><span class="p">)):</span>
<span class="k">return</span> <span class="sa">f</span><span class="s2">"Hello, </span><span class="si">{</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="si">}</span><span class="s2">. You are authenticated with a JWT."</span>
</code></pre></div>
<h2 id="in-a-path-operation">In a path operation<a class="headerlink" href="#in-a-path-operation" title="Permanent link"></a></h2>
<p>If you don't need the user in the route logic, you can use this syntax:</p>
<div class="highlight"><pre><span></span><code><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"/protected-route"</span><span class="p">,</span> <span class="n">dependencies</span><span class="o">=</span><span class="p">[</span><span class="n">Depends</span><span class="p">(</span><span class="n">current_superuser</span><span class="p">)])</span>

View File

@@ -7,9 +7,9 @@
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<meta content="Ready-to-use and customizable users management for FastAPI" name="description"/>
<link href="../../favicon.png" rel="icon"/>
<meta content="mkdocs-1.2.2, mkdocs-material-7.2.7" name="generator"/>
<meta content="mkdocs-1.2.2, mkdocs-material-7.2.8" name="generator"/>
<title>Flow - FastAPI Users</title>
<link href="../../assets/stylesheets/main.3c7cdd75.min.css" rel="stylesheet"/>
<link href="../../assets/stylesheets/main.92558b1b.min.css" rel="stylesheet"/>
<link href="../../assets/stylesheets/palette.3f5d1f46.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&amp;display=fallback" rel="stylesheet"/>

View File

@@ -7,9 +7,9 @@
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<meta content="Ready-to-use and customizable users management for FastAPI" name="description"/>
<link href="../../favicon.png" rel="icon"/>
<meta content="mkdocs-1.2.2, mkdocs-material-7.2.7" name="generator"/>
<meta content="mkdocs-1.2.2, mkdocs-material-7.2.8" name="generator"/>
<title>Routes - FastAPI Users</title>
<link href="../../assets/stylesheets/main.3c7cdd75.min.css" rel="stylesheet"/>
<link href="../../assets/stylesheets/main.92558b1b.min.css" rel="stylesheet"/>
<link href="../../assets/stylesheets/palette.3f5d1f46.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&amp;display=fallback" rel="stylesheet"/>