Deploying to gh-pages from @ a82d61ed27 🚀

This commit is contained in:
realaravinth
2021-05-01 18:24:44 +00:00
parent 86b25b34ba
commit 542644a828
55 changed files with 133 additions and 199 deletions

View File

@@ -347,21 +347,6 @@
<span id="344">344</span>
<span id="345">345</span>
<span id="346">346</span>
<span id="347">347</span>
<span id="348">348</span>
<span id="349">349</span>
<span id="350">350</span>
<span id="351">351</span>
<span id="352">352</span>
<span id="353">353</span>
<span id="354">354</span>
<span id="355">355</span>
<span id="356">356</span>
<span id="357">357</span>
<span id="358">358</span>
<span id="359">359</span>
<span id="360">360</span>
<span id="361">361</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="comment">/*
* Copyright (C) 2021 Aravinth Manivannan &lt;realaravinth@batsense.net&gt;
@@ -389,6 +374,7 @@
<span class="kw">use</span> <span class="kw">super</span>::<span class="ident">mcaptcha</span>::<span class="ident">get_random</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">errors</span>::<span class="kw-2">*</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">CheckLogin</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">Data</span>;
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Debug</span>, <span class="ident">Deserialize</span>, <span class="ident">Serialize</span>)]</span>
@@ -518,8 +504,6 @@
<span class="attribute">#[<span class="ident">get</span>(<span class="string">&quot;/api/v1/account/secret/&quot;</span>)]</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">get_secret</span>(<span class="ident">id</span>: <span class="ident">Identity</span>, <span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op">&lt;</span><span class="ident">Data</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
<span class="ident">is_authenticated</span>(<span class="kw-2">&amp;</span><span class="ident">id</span>)<span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">secret</span> <span class="op">=</span> <span class="ident">sqlx</span>::<span class="macro">query_as</span><span class="macro">!</span>(
@@ -533,13 +517,11 @@
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse</span>::<span class="prelude-val">Ok</span>().<span class="ident">json</span>(<span class="ident">secret</span>))
}
<span class="attribute">#[<span class="ident">post</span>(<span class="string">&quot;/api/v1/account/secret/&quot;</span>)]</span>
<span class="attribute">#[<span class="ident">post</span>(<span class="string">&quot;/api/v1/account/secret/&quot;</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">&quot;CheckLogin&quot;</span>)]</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">update_user_secret</span>(
<span class="ident">id</span>: <span class="ident">Identity</span>,
<span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op">&lt;</span><span class="ident">Data</span><span class="op">&gt;</span>,
) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
<span class="ident">is_authenticated</span>(<span class="kw-2">&amp;</span><span class="ident">id</span>)<span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">secret</span>;
@@ -576,7 +558,7 @@
<span class="kw">pub</span> <span class="ident">email</span>: <span class="ident">String</span>,
}
<span class="attribute">#[<span class="ident">post</span>(<span class="string">&quot;/api/v1/account/email/&quot;</span>)]</span>
<span class="attribute">#[<span class="ident">post</span>(<span class="string">&quot;/api/v1/account/email/&quot;</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">&quot;CheckLogin&quot;</span>)]</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">set_email</span>(
<span class="ident">id</span>: <span class="ident">Identity</span>,
@@ -584,8 +566,6 @@
<span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op">&lt;</span><span class="ident">Data</span><span class="op">&gt;</span>,
) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
<span class="ident">is_authenticated</span>(<span class="kw-2">&amp;</span><span class="ident">id</span>)<span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="ident">data</span>.<span class="ident">creds</span>.<span class="ident">email</span>(<span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">email</span>)<span class="question-mark">?</span>;
@@ -612,25 +592,17 @@
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse</span>::<span class="prelude-val">Ok</span>())
}
<span class="attribute">#[<span class="ident">get</span>(<span class="string">&quot;/logout&quot;</span>)]</span>
<span class="attribute">#[<span class="ident">get</span>(<span class="string">&quot;/logout&quot;</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">&quot;CheckLogin&quot;</span>)]</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">signout</span>(<span class="ident">id</span>: <span class="ident">Identity</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="kw">_</span>) <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>() {
<span class="ident">id</span>.<span class="ident">forget</span>();
}
<span class="ident">HttpResponse</span>::<span class="ident">Found</span>()
<span class="ident">HttpResponse</span>::<span class="prelude-val">Ok</span>()
.<span class="ident">set_header</span>(<span class="ident">header</span>::<span class="ident">LOCATION</span>, <span class="string">&quot;/login&quot;</span>)
.<span class="ident">body</span>(<span class="string">&quot;&quot;</span>)
}
<span class="doccomment">/// Check if user is authenticated</span>
<span class="comment">// TODO use middleware</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">is_authenticated</span>(<span class="ident">id</span>: <span class="kw-2">&amp;</span><span class="ident">Identity</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="comment">// access request identity</span>
<span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">ok_or</span>(<span class="ident">ServiceError</span>::<span class="ident">AuthorizationRequired</span>)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
<span class="attribute">#[<span class="ident">post</span>(<span class="string">&quot;/api/v1/account/delete&quot;</span>)]</span>
<span class="attribute">#[<span class="ident">post</span>(<span class="string">&quot;/api/v1/account/delete&quot;</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">&quot;CheckLogin&quot;</span>)]</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">delete_account</span>(
<span class="ident">id</span>: <span class="ident">Identity</span>,
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op">&lt;</span><span class="ident">Password</span><span class="op">&gt;</span>,
@@ -639,8 +611,6 @@
<span class="kw">use</span> <span class="ident">argon2_creds</span>::<span class="ident">Config</span>;
<span class="kw">use</span> <span class="ident">sqlx</span>::<span class="ident">Error</span>::<span class="ident">RowNotFound</span>;
<span class="ident">is_authenticated</span>(<span class="kw-2">&amp;</span><span class="ident">id</span>)<span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">rec</span> <span class="op">=</span> <span class="ident">sqlx</span>::<span class="macro">query_as</span><span class="macro">!</span>(