mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2026-02-12 10:35:39 +00:00
Deploying to gh-pages from @ 06815469b7 🚀
This commit is contained in:
@@ -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 <realaravinth@batsense.net>
|
||||
@@ -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">"/api/v1/account/email/"</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"><</span><span class="ident">Email</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="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="prelude-val">Some</span>(<span class="kw-2">&</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">"UPDATE mcaptcha_users set email = $1
|
||||
WHERE name = $2"</span>,
|
||||
<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">email</span>,
|
||||
<span class="kw-2">&</span><span class="ident">username</span>,
|
||||
)
|
||||
.<span class="ident">execute</span>(<span class="kw-2">&</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">"23505"</span>))
|
||||
<span class="op">&&</span> <span class="ident">err</span>.<span class="ident">message</span>().<span class="ident">contains</span>(<span class="string">"mcaptcha_users_email_key"</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">"/api/v1/signout"</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>() {
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
<span id="56">56</span>
|
||||
<span id="57">57</span>
|
||||
<span id="58">58</span>
|
||||
<span id="59">59</span>
|
||||
</pre><div class="example-wrap"><pre class="rust ">
|
||||
<span class="comment">/*
|
||||
* Copyright (C) 2021 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
@@ -98,6 +99,7 @@
|
||||
<span class="ident">cfg</span>.<span class="ident">service</span>(<span class="ident">auth</span>::<span class="ident">email_exists</span>);
|
||||
<span class="ident">cfg</span>.<span class="ident">service</span>(<span class="ident">auth</span>::<span class="ident">get_secret</span>);
|
||||
<span class="ident">cfg</span>.<span class="ident">service</span>(<span class="ident">auth</span>::<span class="ident">update_user_secret</span>);
|
||||
<span class="ident">cfg</span>.<span class="ident">service</span>(<span class="ident">auth</span>::<span class="ident">set_email</span>);
|
||||
|
||||
<span class="comment">// mcaptcha</span>
|
||||
<span class="ident">cfg</span>.<span class="ident">service</span>(<span class="ident">mcaptcha</span>::<span class="ident">mcaptcha</span>::<span class="ident">add_mcaptcha</span>);
|
||||
|
||||
@@ -186,6 +186,12 @@
|
||||
<span id="183">183</span>
|
||||
<span id="184">184</span>
|
||||
<span id="185">185</span>
|
||||
<span id="186">186</span>
|
||||
<span id="187">187</span>
|
||||
<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>
|
||||
@@ -266,6 +272,11 @@
|
||||
<span class="doccomment">/// when the a username is already taken</span>
|
||||
<span class="attribute">#[<span class="ident">display</span>(<span class="ident">fmt</span> <span class="op">=</span> <span class="string">"Username not available"</span>)]</span>
|
||||
<span class="ident">UsernameTaken</span>,
|
||||
|
||||
<span class="doccomment">/// email is already taken</span>
|
||||
<span class="attribute">#[<span class="ident">display</span>(<span class="ident">fmt</span> <span class="op">=</span> <span class="string">"Email not available"</span>)]</span>
|
||||
<span class="ident">EmailTaken</span>,
|
||||
|
||||
<span class="doccomment">/// when the a token name is already taken</span>
|
||||
<span class="doccomment">/// token not found</span>
|
||||
<span class="attribute">#[<span class="ident">display</span>(<span class="ident">fmt</span> <span class="op">=</span> <span class="string">"Token not found. Is token registered?"</span>)]</span>
|
||||
@@ -311,6 +322,7 @@
|
||||
<span class="ident">ServiceError</span>::<span class="ident">PasswordTooLong</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">UsernameTaken</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">EmailTaken</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">TokenNotFound</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">CaptchaError</span>(<span class="ident">e</span>) <span class="op">=</span><span class="op">></span> <span class="kw">match</span> <span class="ident">e</span> {
|
||||
|
||||
@@ -138,7 +138,6 @@
|
||||
<span id="135">135</span>
|
||||
<span id="136">136</span>
|
||||
<span id="137">137</span>
|
||||
<span id="138">138</span>
|
||||
</pre><div class="example-wrap"><pre class="rust ">
|
||||
<span class="comment">/*
|
||||
* Copyright (C) 2021 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
@@ -158,11 +157,10 @@
|
||||
*/</span>
|
||||
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">env</span>;
|
||||
|
||||
<span class="kw">use</span> <span class="ident">actix_cors</span>::<span class="ident">Cors</span>;
|
||||
<span class="kw">use</span> <span class="ident">actix_identity</span>::{<span class="ident">CookieIdentityPolicy</span>, <span class="ident">IdentityService</span>};
|
||||
<span class="kw">use</span> <span class="ident">actix_web</span>::{
|
||||
<span class="ident">client</span>::<span class="ident">Client</span>, <span class="ident">error</span>::<span class="ident">InternalError</span>, <span class="ident">http</span>::<span class="ident">StatusCode</span>, <span class="ident">middleware</span>, <span class="ident">web</span>::<span class="ident">scope</span>,
|
||||
<span class="ident">web</span>::<span class="ident">JsonConfig</span>, <span class="ident">App</span>, <span class="ident">HttpServer</span>,
|
||||
<span class="ident">client</span>::<span class="ident">Client</span>, <span class="ident">error</span>::<span class="ident">InternalError</span>, <span class="ident">http</span>::<span class="ident">StatusCode</span>, <span class="ident">middleware</span>, <span class="ident">web</span>::<span class="ident">JsonConfig</span>, <span class="ident">App</span>,
|
||||
<span class="ident">HttpServer</span>,
|
||||
};
|
||||
<span class="comment">//use awc::Client;</span>
|
||||
<span class="kw">use</span> <span class="ident">cache_buster</span>::<span class="ident">Files</span> <span class="kw">as</span> <span class="ident">FileMap</span>;
|
||||
|
||||
@@ -238,14 +238,14 @@
|
||||
<span class="macro">format</span><span class="macro">!</span>(<span class="string">"{}:{}"</span>, <span class="self">self</span>.<span class="ident">ip</span>, <span class="self">self</span>.<span class="ident">port</span>)
|
||||
}
|
||||
|
||||
<span class="kw">fn</span> <span class="ident">check_url_prefix</span>(<span class="kw-2">&</span><span class="kw-2">mut</span> <span class="self">self</span>) {
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">prefix</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">url_prefix</span>.<span class="ident">clone</span>() {
|
||||
<span class="self">self</span>.<span class="ident">url_prefix</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">prefix</span>.<span class="ident">trim</span>().<span class="ident">into</span>());
|
||||
<span class="kw">if</span> <span class="ident">prefix</span>.<span class="ident">trim</span>().<span class="ident">is_empty</span>() {
|
||||
<span class="self">self</span>.<span class="ident">url_prefix</span> <span class="op">=</span> <span class="prelude-val">None</span>;
|
||||
}
|
||||
}
|
||||
}
|
||||
<span class="comment">//fn check_url_prefix(&mut self) {</span>
|
||||
<span class="comment">// if let Some(prefix) = self.url_prefix.clone() {</span>
|
||||
<span class="comment">// self.url_prefix = Some(prefix.trim().into());</span>
|
||||
<span class="comment">// if prefix.trim().is_empty() {</span>
|
||||
<span class="comment">// self.url_prefix = None;</span>
|
||||
<span class="comment">// }</span>
|
||||
<span class="comment">// }</span>
|
||||
<span class="comment">//}</span>
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Deserialize</span>)]</span>
|
||||
@@ -367,21 +367,21 @@
|
||||
.<span class="ident">expect</span>(<span class="string">"Couldn't set databse url"</span>);
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
|
||||
<span class="kw">mod</span> <span class="ident">tests</span> {
|
||||
<span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
|
||||
|
||||
<span class="attribute">#[<span class="ident">test</span>]</span>
|
||||
<span class="kw">fn</span> <span class="ident">url_prefix_test</span>() {
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">settings</span> <span class="op">=</span> <span class="ident">Settings</span>::<span class="ident">new</span>().<span class="ident">unwrap</span>();
|
||||
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">settings</span>.<span class="ident">server</span>.<span class="ident">url_prefix</span>.<span class="ident">is_none</span>());
|
||||
<span class="ident">settings</span>.<span class="ident">server</span>.<span class="ident">url_prefix</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="string">"test"</span>.<span class="ident">into</span>());
|
||||
<span class="ident">settings</span>.<span class="ident">server</span>.<span class="ident">check_url_prefix</span>();
|
||||
<span class="ident">settings</span>.<span class="ident">server</span>.<span class="ident">url_prefix</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="string">" "</span>.<span class="ident">into</span>());
|
||||
<span class="ident">settings</span>.<span class="ident">server</span>.<span class="ident">check_url_prefix</span>();
|
||||
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">settings</span>.<span class="ident">server</span>.<span class="ident">url_prefix</span>.<span class="ident">is_none</span>());
|
||||
}
|
||||
}
|
||||
<span class="comment">//#[cfg(test)]</span>
|
||||
<span class="comment">//mod tests {</span>
|
||||
<span class="comment">// use super::*;</span>
|
||||
<span class="comment">//</span>
|
||||
<span class="comment">// #[test]</span>
|
||||
<span class="comment">// fn url_prefix_test() {</span>
|
||||
<span class="comment">// let mut settings = Settings::new().unwrap();</span>
|
||||
<span class="comment">// assert!(settings.server.url_prefix.is_none());</span>
|
||||
<span class="comment">// settings.server.url_prefix = Some("test".into());</span>
|
||||
<span class="comment">// settings.server.check_url_prefix();</span>
|
||||
<span class="comment">// settings.server.url_prefix = Some(" ".into());</span>
|
||||
<span class="comment">// settings.server.check_url_prefix();</span>
|
||||
<span class="comment">// assert!(settings.server.url_prefix.is_none());</span>
|
||||
<span class="comment">// }</span>
|
||||
<span class="comment">//}</span>
|
||||
</pre></div>
|
||||
</section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../../" data-current-crate="guard"></div>
|
||||
<script src="../../main.js"></script><script src="../../source-script.js"></script><script src="../../source-files.js"></script><script defer src="../../search-index.js"></script></body></html>
|
||||
@@ -238,14 +238,14 @@
|
||||
<span class="macro">format</span><span class="macro">!</span>(<span class="string">"{}:{}"</span>, <span class="self">self</span>.<span class="ident">ip</span>, <span class="self">self</span>.<span class="ident">port</span>)
|
||||
}
|
||||
|
||||
<span class="kw">fn</span> <span class="ident">check_url_prefix</span>(<span class="kw-2">&</span><span class="kw-2">mut</span> <span class="self">self</span>) {
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">prefix</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">url_prefix</span>.<span class="ident">clone</span>() {
|
||||
<span class="self">self</span>.<span class="ident">url_prefix</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">prefix</span>.<span class="ident">trim</span>().<span class="ident">into</span>());
|
||||
<span class="kw">if</span> <span class="ident">prefix</span>.<span class="ident">trim</span>().<span class="ident">is_empty</span>() {
|
||||
<span class="self">self</span>.<span class="ident">url_prefix</span> <span class="op">=</span> <span class="prelude-val">None</span>;
|
||||
}
|
||||
}
|
||||
}
|
||||
<span class="comment">//fn check_url_prefix(&mut self) {</span>
|
||||
<span class="comment">// if let Some(prefix) = self.url_prefix.clone() {</span>
|
||||
<span class="comment">// self.url_prefix = Some(prefix.trim().into());</span>
|
||||
<span class="comment">// if prefix.trim().is_empty() {</span>
|
||||
<span class="comment">// self.url_prefix = None;</span>
|
||||
<span class="comment">// }</span>
|
||||
<span class="comment">// }</span>
|
||||
<span class="comment">//}</span>
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Deserialize</span>)]</span>
|
||||
@@ -367,21 +367,21 @@
|
||||
.<span class="ident">expect</span>(<span class="string">"Couldn't set databse url"</span>);
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
|
||||
<span class="kw">mod</span> <span class="ident">tests</span> {
|
||||
<span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
|
||||
|
||||
<span class="attribute">#[<span class="ident">test</span>]</span>
|
||||
<span class="kw">fn</span> <span class="ident">url_prefix_test</span>() {
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">settings</span> <span class="op">=</span> <span class="ident">Settings</span>::<span class="ident">new</span>().<span class="ident">unwrap</span>();
|
||||
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">settings</span>.<span class="ident">server</span>.<span class="ident">url_prefix</span>.<span class="ident">is_none</span>());
|
||||
<span class="ident">settings</span>.<span class="ident">server</span>.<span class="ident">url_prefix</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="string">"test"</span>.<span class="ident">into</span>());
|
||||
<span class="ident">settings</span>.<span class="ident">server</span>.<span class="ident">check_url_prefix</span>();
|
||||
<span class="ident">settings</span>.<span class="ident">server</span>.<span class="ident">url_prefix</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="string">" "</span>.<span class="ident">into</span>());
|
||||
<span class="ident">settings</span>.<span class="ident">server</span>.<span class="ident">check_url_prefix</span>();
|
||||
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">settings</span>.<span class="ident">server</span>.<span class="ident">url_prefix</span>.<span class="ident">is_none</span>());
|
||||
}
|
||||
}
|
||||
<span class="comment">//#[cfg(test)]</span>
|
||||
<span class="comment">//mod tests {</span>
|
||||
<span class="comment">// use super::*;</span>
|
||||
<span class="comment">//</span>
|
||||
<span class="comment">// #[test]</span>
|
||||
<span class="comment">// fn url_prefix_test() {</span>
|
||||
<span class="comment">// let mut settings = Settings::new().unwrap();</span>
|
||||
<span class="comment">// assert!(settings.server.url_prefix.is_none());</span>
|
||||
<span class="comment">// settings.server.url_prefix = Some("test".into());</span>
|
||||
<span class="comment">// settings.server.check_url_prefix();</span>
|
||||
<span class="comment">// settings.server.url_prefix = Some(" ".into());</span>
|
||||
<span class="comment">// settings.server.check_url_prefix();</span>
|
||||
<span class="comment">// assert!(settings.server.url_prefix.is_none());</span>
|
||||
<span class="comment">// }</span>
|
||||
<span class="comment">//}</span>
|
||||
</pre></div>
|
||||
</section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../../" data-current-crate="tests_migrate"></div>
|
||||
<script src="../../main.js"></script><script src="../../source-script.js"></script><script src="../../source-files.js"></script><script defer src="../../search-index.js"></script></body></html>
|
||||
Reference in New Issue
Block a user