mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2026-02-12 02:25:41 +00:00
Deploying to gh-pages from @ a82d61ed27 🚀
This commit is contained in:
@@ -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 <realaravinth@batsense.net>
|
||||
@@ -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">"/api/v1/account/secret/"</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"><</span><span class="ident">Data</span><span class="op">></span>) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="ident">is_authenticated</span>(<span class="kw-2">&</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">"/api/v1/account/secret/"</span>)]</span>
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/account/secret/"</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">"CheckLogin"</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"><</span><span class="ident">Data</span><span class="op">></span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="ident">is_authenticated</span>(<span class="kw-2">&</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">"/api/v1/account/email/"</span>)]</span>
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/account/email/"</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">"CheckLogin"</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"><</span><span class="ident">Data</span><span class="op">></span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="ident">is_authenticated</span>(<span class="kw-2">&</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">&</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">"/logout"</span>)]</span>
|
||||
<span class="attribute">#[<span class="ident">get</span>(<span class="string">"/logout"</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">"CheckLogin"</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">></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">"/login"</span>)
|
||||
.<span class="ident">body</span>(<span class="string">""</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">&</span><span class="ident">Identity</span>) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span>()<span class="op">></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">"/api/v1/account/delete"</span>)]</span>
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/account/delete"</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">"CheckLogin"</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"><</span><span class="ident">Password</span><span class="op">></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">&</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>(
|
||||
|
||||
@@ -158,8 +158,6 @@
|
||||
<span id="155">155</span>
|
||||
<span id="156">156</span>
|
||||
<span id="157">157</span>
|
||||
<span id="158">158</span>
|
||||
<span id="159">159</span>
|
||||
</pre><div class="example-wrap"><pre class="rust ">
|
||||
<span class="comment">/*
|
||||
* Copyright (C) 2021 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
@@ -182,9 +180,9 @@
|
||||
<span class="kw">use</span> <span class="ident">actix_web</span>::{<span class="ident">post</span>, <span class="ident">web</span>, <span class="ident">HttpResponse</span>, <span class="ident">Responder</span>};
|
||||
<span class="kw">use</span> <span class="ident">serde</span>::{<span class="ident">Deserialize</span>, <span class="ident">Serialize</span>};
|
||||
|
||||
<span class="kw">use</span> <span class="kw">super</span>::<span class="ident">is_authenticated</span>;
|
||||
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">api</span>::<span class="ident">v1</span>::<span class="ident">mcaptcha</span>::<span class="ident">mcaptcha</span>::<span class="ident">MCaptchaDetails</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">Deserialize</span>, <span class="ident">Serialize</span>)]</span>
|
||||
@@ -193,13 +191,12 @@
|
||||
<span class="kw">pub</span> <span class="ident">duration</span>: <span class="ident">i32</span>,
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/domain/token/duration/update"</span>)]</span>
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/domain/token/duration/update"</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">"CheckLogin"</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">update_duration</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op"><</span><span class="ident">UpdateDuration</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op"><</span><span class="ident">Data</span><span class="op">></span>,
|
||||
<span class="ident">id</span>: <span class="ident">Identity</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="ident">is_authenticated</span>(<span class="kw-2">&</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">if</span> <span class="ident">payload</span>.<span class="ident">duration</span> <span class="op">></span> <span class="number">0</span> {
|
||||
@@ -232,13 +229,12 @@
|
||||
<span class="kw">pub</span> <span class="ident">token</span>: <span class="ident">String</span>,
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/domain/token/duration/get"</span>)]</span>
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/domain/token/duration/get"</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">"CheckLogin"</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">get_duration</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op"><</span><span class="ident">MCaptchaDetails</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op"><</span><span class="ident">Data</span><span class="op">></span>,
|
||||
<span class="ident">id</span>: <span class="ident">Identity</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="ident">is_authenticated</span>(<span class="kw-2">&</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">duration</span> <span class="op">=</span> <span class="ident">sqlx</span>::<span class="macro">query_as</span><span class="macro">!</span>(
|
||||
|
||||
@@ -331,10 +331,6 @@
|
||||
<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>
|
||||
</pre><div class="example-wrap"><pre class="rust ">
|
||||
<span class="comment">/*
|
||||
* Copyright (C) 2021 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
@@ -358,9 +354,9 @@
|
||||
<span class="kw">use</span> <span class="ident">m_captcha</span>::{<span class="ident">defense</span>::<span class="ident">Level</span>, <span class="ident">DefenseBuilder</span>};
|
||||
<span class="kw">use</span> <span class="ident">serde</span>::{<span class="ident">Deserialize</span>, <span class="ident">Serialize</span>};
|
||||
|
||||
<span class="kw">use</span> <span class="kw">super</span>::<span class="ident">is_authenticated</span>;
|
||||
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">api</span>::<span class="ident">v1</span>::<span class="ident">mcaptcha</span>::<span class="ident">mcaptcha</span>::<span class="ident">MCaptchaDetails</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">Serialize</span>, <span class="ident">Deserialize</span>)]</span>
|
||||
@@ -372,13 +368,12 @@
|
||||
|
||||
<span class="comment">// TODO try for non-existent token names</span>
|
||||
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/levels/add"</span>)]</span>
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/levels/add"</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">"CheckLogin"</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">add_levels</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op"><</span><span class="ident">AddLevels</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op"><</span><span class="ident">Data</span><span class="op">></span>,
|
||||
<span class="ident">id</span>: <span class="ident">Identity</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="ident">is_authenticated</span>(<span class="kw-2">&</span><span class="ident">id</span>)<span class="question-mark">?</span>;
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">defense</span> <span class="op">=</span> <span class="ident">DefenseBuilder</span>::<span class="ident">default</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>();
|
||||
|
||||
@@ -413,13 +408,12 @@
|
||||
<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">"/api/v1/mcaptcha/levels/update"</span>)]</span>
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/levels/update"</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">"CheckLogin"</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">update_levels</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op"><</span><span class="ident">AddLevels</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op"><</span><span class="ident">Data</span><span class="op">></span>,
|
||||
<span class="ident">id</span>: <span class="ident">Identity</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="ident">is_authenticated</span>(<span class="kw-2">&</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">defense</span> <span class="op">=</span> <span class="ident">DefenseBuilder</span>::<span class="ident">default</span>();
|
||||
|
||||
@@ -472,13 +466,12 @@
|
||||
<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">"/api/v1/mcaptcha/levels/delete"</span>)]</span>
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/levels/delete"</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">"CheckLogin"</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">delete_levels</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op"><</span><span class="ident">AddLevels</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op"><</span><span class="ident">Data</span><span class="op">></span>,
|
||||
<span class="ident">id</span>: <span class="ident">Identity</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="ident">is_authenticated</span>(<span class="kw-2">&</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">for</span> <span class="ident">level</span> <span class="kw">in</span> <span class="ident">payload</span>.<span class="ident">levels</span>.<span class="ident">iter</span>() {
|
||||
@@ -500,13 +493,12 @@
|
||||
<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">"/api/v1/mcaptcha/levels/get"</span>)]</span>
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/levels/get"</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">"CheckLogin"</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">get_levels</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op"><</span><span class="ident">MCaptchaDetails</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op"><</span><span class="ident">Data</span><span class="op">></span>,
|
||||
<span class="ident">id</span>: <span class="ident">Identity</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="ident">is_authenticated</span>(<span class="kw-2">&</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">levels</span> <span class="op">=</span> <span class="ident">get_levels_util</span>(<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">key</span>, <span class="kw-2">&</span><span class="ident">username</span>, <span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
|
||||
@@ -288,9 +288,6 @@
|
||||
<span id="285">285</span>
|
||||
<span id="286">286</span>
|
||||
<span id="287">287</span>
|
||||
<span id="288">288</span>
|
||||
<span id="289">289</span>
|
||||
<span id="290">290</span>
|
||||
</pre><div class="example-wrap"><pre class="rust ">
|
||||
<span class="comment">/*
|
||||
* Copyright (C) 2021 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
@@ -314,8 +311,9 @@
|
||||
<span class="kw">use</span> <span class="ident">actix_web</span>::{<span class="ident">post</span>, <span class="ident">web</span>, <span class="ident">HttpResponse</span>, <span class="ident">Responder</span>};
|
||||
<span class="kw">use</span> <span class="ident">serde</span>::{<span class="ident">Deserialize</span>, <span class="ident">Serialize</span>};
|
||||
|
||||
<span class="kw">use</span> <span class="kw">super</span>::{<span class="ident">get_random</span>, <span class="ident">is_authenticated</span>};
|
||||
<span class="kw">use</span> <span class="kw">super</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>
|
||||
@@ -329,9 +327,8 @@
|
||||
<span class="kw">pub</span> <span class="ident">key</span>: <span class="ident">String</span>,
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/add"</span>)]</span>
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/add"</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">"CheckLogin"</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">add_mcaptcha</span>(<span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op"><</span><span class="ident">Data</span><span class="op">></span>, <span class="ident">id</span>: <span class="ident">Identity</span>) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="ident">is_authenticated</span>(<span class="kw-2">&</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">key</span>;
|
||||
|
||||
@@ -372,7 +369,7 @@
|
||||
<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">resp</span>))
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/update/key"</span>)]</span>
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/update/key"</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">"CheckLogin"</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">update_token</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op"><</span><span class="ident">MCaptchaDetails</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op"><</span><span class="ident">Data</span><span class="op">></span>,
|
||||
@@ -380,7 +377,6 @@
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">borrow</span>::<span class="ident">Cow</span>;
|
||||
|
||||
<span class="ident">is_authenticated</span>(<span class="kw-2">&</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">key</span>;
|
||||
|
||||
@@ -426,13 +422,12 @@
|
||||
<span class="prelude-val">Ok</span>(())
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/get"</span>)]</span>
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/get"</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">"CheckLogin"</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">get_token</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op"><</span><span class="ident">MCaptchaDetails</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op"><</span><span class="ident">Data</span><span class="op">></span>,
|
||||
<span class="ident">id</span>: <span class="ident">Identity</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="ident">is_authenticated</span>(<span class="kw-2">&</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">res</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">sqlx</span>::<span class="macro">query_as</span><span class="macro">!</span>(
|
||||
<span class="ident">MCaptchaDetails</span>,
|
||||
@@ -455,13 +450,12 @@
|
||||
<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">res</span>))
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/delete"</span>)]</span>
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/delete"</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">"CheckLogin"</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">delete_mcaptcha</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op"><</span><span class="ident">MCaptchaDetails</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op"><</span><span class="ident">Data</span><span class="op">></span>,
|
||||
<span class="ident">id</span>: <span class="ident">Identity</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="ident">is_authenticated</span>(<span class="kw-2">&</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">sqlx</span>::<span class="macro">query</span><span class="macro">!</span>(
|
||||
|
||||
@@ -36,8 +36,6 @@
|
||||
<span id="33">33</span>
|
||||
<span id="34">34</span>
|
||||
<span id="35">35</span>
|
||||
<span id="36">36</span>
|
||||
<span id="37">37</span>
|
||||
</pre><div class="example-wrap"><pre class="rust ">
|
||||
<span class="comment">/*
|
||||
* Copyright (C) 2021 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
@@ -61,8 +59,6 @@
|
||||
<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">mcaptcha</span>;
|
||||
<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">stats</span>;
|
||||
|
||||
<span class="kw">pub</span> <span class="kw">use</span> <span class="kw">super</span>::<span class="ident">auth</span>::<span class="ident">is_authenticated</span>;
|
||||
|
||||
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_random</span>(<span class="ident">len</span>: <span class="ident">usize</span>) <span class="op">-</span><span class="op">></span> <span class="ident">String</span> {
|
||||
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">iter</span>;
|
||||
|
||||
|
||||
@@ -52,7 +52,6 @@
|
||||
<span id="49">49</span>
|
||||
<span id="50">50</span>
|
||||
<span id="51">51</span>
|
||||
<span id="52">52</span>
|
||||
</pre><div class="example-wrap"><pre class="rust ">
|
||||
<span class="comment">/*
|
||||
* Copyright (C) 2021 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
@@ -79,7 +78,6 @@
|
||||
<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">verify_token</span>;
|
||||
|
||||
<span class="kw">pub</span> <span class="kw">use</span> <span class="kw">super</span>::<span class="ident">mcaptcha</span>::<span class="ident">duration</span>::<span class="ident">GetDurationResp</span>;
|
||||
<span class="kw">pub</span> <span class="kw">use</span> <span class="kw">super</span>::<span class="ident">mcaptcha</span>::<span class="ident">is_authenticated</span>;
|
||||
<span class="kw">pub</span> <span class="kw">use</span> <span class="kw">super</span>::<span class="ident">mcaptcha</span>::<span class="ident">levels</span>::<span class="ident">I32Levels</span>;
|
||||
|
||||
<span class="comment">// middleware protected by scope</span>
|
||||
|
||||
@@ -191,7 +191,6 @@
|
||||
<span id="188">188</span>
|
||||
<span id="189">189</span>
|
||||
<span id="190">190</span>
|
||||
<span id="191">191</span>
|
||||
</pre><div class="example-wrap"><pre class="rust ">
|
||||
<span class="comment">/*
|
||||
* Copyright (C) 2021 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
@@ -248,9 +247,6 @@
|
||||
<span class="attribute">#[<span class="ident">display</span>(<span class="ident">fmt</span> <span class="op">=</span> <span class="string">"Username not found"</span>)]</span>
|
||||
<span class="ident">UsernameNotFound</span>,
|
||||
|
||||
<span class="attribute">#[<span class="ident">display</span>(<span class="ident">fmt</span> <span class="op">=</span> <span class="string">"Authorization required"</span>)]</span>
|
||||
<span class="ident">AuthorizationRequired</span>,
|
||||
|
||||
<span class="doccomment">/// when the value passed contains profainity</span>
|
||||
<span class="attribute">#[<span class="ident">display</span>(<span class="ident">fmt</span> <span class="op">=</span> <span class="string">"Can't allow profanity in usernames"</span>)]</span>
|
||||
<span class="ident">ProfainityError</span>,
|
||||
@@ -312,7 +308,6 @@
|
||||
<span class="ident">ServiceError</span>::<span class="ident">NotAUrl</span> <span class="op">=</span><span class="op">></span> <span class="ident">StatusCode</span>::<span class="ident">BAD_REQUEST</span>,
|
||||
<span class="ident">ServiceError</span>::<span class="ident">WrongPassword</span> <span class="op">=</span><span class="op">></span> <span class="ident">StatusCode</span>::<span class="ident">UNAUTHORIZED</span>,
|
||||
<span class="ident">ServiceError</span>::<span class="ident">UsernameNotFound</span> <span class="op">=</span><span class="op">></span> <span class="ident">StatusCode</span>::<span class="ident">NOT_FOUND</span>,
|
||||
<span class="ident">ServiceError</span>::<span class="ident">AuthorizationRequired</span> <span class="op">=</span><span class="op">></span> <span class="ident">StatusCode</span>::<span class="ident">UNAUTHORIZED</span>,
|
||||
|
||||
<span class="ident">ServiceError</span>::<span class="ident">ProfainityError</span> <span class="op">=</span><span class="op">></span> <span class="ident">StatusCode</span>::<span class="ident">BAD_REQUEST</span>,
|
||||
<span class="ident">ServiceError</span>::<span class="ident">BlacklistError</span> <span class="op">=</span><span class="op">></span> <span class="ident">StatusCode</span>::<span class="ident">BAD_REQUEST</span>,
|
||||
@@ -350,18 +345,21 @@
|
||||
}
|
||||
|
||||
<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident">ValidationErrors</span><span class="op">></span> <span class="kw">for</span> <span class="ident">ServiceError</span> {
|
||||
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
|
||||
<span class="kw">fn</span> <span class="ident">from</span>(<span class="kw">_</span>: <span class="ident">ValidationErrors</span>) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceError</span> {
|
||||
<span class="ident">ServiceError</span>::<span class="ident">NotAnEmail</span>
|
||||
}
|
||||
}
|
||||
|
||||
<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident">ParseError</span><span class="op">></span> <span class="kw">for</span> <span class="ident">ServiceError</span> {
|
||||
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
|
||||
<span class="kw">fn</span> <span class="ident">from</span>(<span class="kw">_</span>: <span class="ident">ParseError</span>) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceError</span> {
|
||||
<span class="ident">ServiceError</span>::<span class="ident">NotAUrl</span>
|
||||
}
|
||||
}
|
||||
|
||||
<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident">CaptchaError</span><span class="op">></span> <span class="kw">for</span> <span class="ident">ServiceError</span> {
|
||||
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
|
||||
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">e</span>: <span class="ident">CaptchaError</span>) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceError</span> {
|
||||
<span class="ident">ServiceError</span>::<span class="ident">CaptchaError</span>(<span class="ident">e</span>)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user