Deploying to gh-pages from @ 06815469b7 🚀

This commit is contained in:
realaravinth
2021-04-14 04:33:02 +00:00
parent b327a0da26
commit e45566bb02
56 changed files with 467 additions and 135 deletions

View File

@@ -318,6 +318,47 @@
<span id="315">315</span>
<span id="316">316</span>
<span id="317">317</span>
<span id="318">318</span>
<span id="319">319</span>
<span id="320">320</span>
<span id="321">321</span>
<span id="322">322</span>
<span id="323">323</span>
<span id="324">324</span>
<span id="325">325</span>
<span id="326">326</span>
<span id="327">327</span>
<span id="328">328</span>
<span id="329">329</span>
<span id="330">330</span>
<span id="331">331</span>
<span id="332">332</span>
<span id="333">333</span>
<span id="334">334</span>
<span id="335">335</span>
<span id="336">336</span>
<span id="337">337</span>
<span id="338">338</span>
<span id="339">339</span>
<span id="340">340</span>
<span id="341">341</span>
<span id="342">342</span>
<span id="343">343</span>
<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>
</pre><div class="example-wrap"><pre class="rust ">
<span class="comment">/*
* Copyright (C) 2021 Aravinth Manivannan &lt;realaravinth@batsense.net&gt;
@@ -526,6 +567,47 @@
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse</span>::<span class="prelude-val">Ok</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>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Email</span> {
<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="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>,
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op">&lt;</span><span class="ident">Email</span><span class="op">&gt;</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="ident">data</span>.<span class="ident">creds</span>.<span class="ident">email</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">email</span>))<span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">sqlx</span>::<span class="macro">query</span><span class="macro">!</span>(
<span class="string">&quot;UPDATE mcaptcha_users set email = $1
WHERE name = $2&quot;</span>,
<span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">email</span>,
<span class="kw-2">&amp;</span><span class="ident">username</span>,
)
.<span class="ident">execute</span>(<span class="kw-2">&amp;</span><span class="ident">data</span>.<span class="ident">db</span>)
.<span class="kw">await</span>;
<span class="kw">if</span> <span class="op">!</span><span class="ident">res</span>.<span class="ident">is_ok</span>() {
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Err</span>(<span class="ident">sqlx</span>::<span class="ident">Error</span>::<span class="ident">Database</span>(<span class="ident">err</span>)) <span class="op">=</span> <span class="ident">res</span> {
<span class="kw">if</span> <span class="ident">err</span>.<span class="ident">code</span>() <span class="op">=</span><span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">Cow</span>::<span class="ident">from</span>(<span class="string">&quot;23505&quot;</span>))
<span class="op">&amp;&amp;</span> <span class="ident">err</span>.<span class="ident">message</span>().<span class="ident">contains</span>(<span class="string">&quot;mcaptcha_users_email_key&quot;</span>)
{
<span class="prelude-val">Err</span>(<span class="ident">ServiceError</span>::<span class="ident">EmailTaken</span>)<span class="question-mark">?</span>
} <span class="kw">else</span> {
<span class="prelude-val">Err</span>(<span class="ident">sqlx</span>::<span class="ident">Error</span>::<span class="ident">Database</span>(<span class="ident">err</span>))<span class="question-mark">?</span>
}
};
}
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse</span>::<span class="prelude-val">Ok</span>())
}
<span class="attribute">#[<span class="ident">post</span>(<span class="string">&quot;/api/v1/signout&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>() {