mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2026-02-13 19:15:39 +00:00
Deploying to gh-pages from @ 3710c8f653 🚀
This commit is contained in:
@@ -195,20 +195,6 @@
|
||||
<span id="190">190</span>
|
||||
<span id="191">191</span>
|
||||
<span id="192">192</span>
|
||||
<span id="193">193</span>
|
||||
<span id="194">194</span>
|
||||
<span id="195">195</span>
|
||||
<span id="196">196</span>
|
||||
<span id="197">197</span>
|
||||
<span id="198">198</span>
|
||||
<span id="199">199</span>
|
||||
<span id="200">200</span>
|
||||
<span id="201">201</span>
|
||||
<span id="202">202</span>
|
||||
<span id="203">203</span>
|
||||
<span id="204">204</span>
|
||||
<span id="205">205</span>
|
||||
<span id="206">206</span>
|
||||
</pre><pre class="rust"><code><span class="comment">/*
|
||||
* Copyright (C) 2022 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
*
|
||||
@@ -228,10 +214,9 @@
|
||||
<span class="kw">use</span> <span class="ident">actix_identity::Identity</span>;
|
||||
<span class="kw">use</span> <span class="ident">actix_web</span>::{<span class="ident">web</span>, <span class="ident">HttpResponse</span>, <span class="ident">Responder</span>};
|
||||
<span class="kw">use</span> <span class="ident">argon2_creds::Config</span>;
|
||||
<span class="kw">use</span> <span class="ident">db_core::Login</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="ident">sqlx::Error::RowNotFound</span>;
|
||||
|
||||
<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::api::v1::auth::runners::Password</span>;
|
||||
<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::errors</span>::<span class="kw-2">*</span>;
|
||||
<span class="kw">use</span> <span class="kw">crate</span>::<span class="kw-2">*</span>;
|
||||
|
||||
@@ -267,15 +252,12 @@
|
||||
|
||||
<span class="kw">let</span> <span class="ident">new_hash</span> <span class="op">=</span> <span class="ident">data</span>.<span class="ident">creds</span>.<span class="ident">password</span>(<span class="kw-2">&</span><span class="ident">update</span>.<span class="ident">new_password</span>)<span class="question-mark">?</span>;
|
||||
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"UPDATE mcaptcha_users set password = $1
|
||||
WHERE name = $2"</span>,
|
||||
<span class="kw-2">&</span><span class="ident">new_hash</span>,
|
||||
<span class="kw-2">&</span><span class="ident">user</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="question-mark">?</span>;
|
||||
<span class="kw">let</span> <span class="ident">p</span> <span class="op">=</span> <span class="ident">db_core::NameHash</span> {
|
||||
<span class="ident">username</span>: <span class="ident">user</span>.<span class="ident">to_owned</span>(),
|
||||
<span class="ident">hash</span>: <span class="ident">new_hash</span>,
|
||||
};
|
||||
|
||||
<span class="ident">data</span>.<span class="ident">db</span>.<span class="ident">update_password</span>(<span class="kw-2">&</span><span class="ident">p</span>).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
<span class="prelude-val">Ok</span>(())
|
||||
}
|
||||
|
||||
@@ -294,26 +276,15 @@
|
||||
|
||||
<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="macro">sqlx::query_as!</span>(
|
||||
<span class="ident">Password</span>,
|
||||
<span class="string">r#"SELECT password FROM mcaptcha_users WHERE name = ($1)"#</span>,
|
||||
<span class="kw-2">&</span><span class="ident">username</span>,
|
||||
)
|
||||
.<span class="ident">fetch_one</span>(<span class="kw-2">&</span><span class="ident">data</span>.<span class="ident">db</span>)
|
||||
.<span class="kw">await</span>;
|
||||
<span class="comment">// TODO: verify behavior when account is not found</span>
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">data</span>.<span class="ident">db</span>.<span class="ident">get_password</span>(<span class="kw-2">&</span><span class="ident">Login::Username</span>(<span class="kw-2">&</span><span class="ident">username</span>)).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
|
||||
<span class="kw">match</span> <span class="ident">rec</span> {
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">s</span>) => {
|
||||
<span class="kw">if</span> <span class="ident">Config::verify</span>(<span class="kw-2">&</span><span class="ident">s</span>.<span class="ident">password</span>, <span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">password</span>)<span class="question-mark">?</span> {
|
||||
<span class="kw">let</span> <span class="ident">update</span>: <span class="ident">UpdatePassword</span> <span class="op">=</span> <span class="ident">payload</span>.<span class="ident">into_inner</span>().<span class="ident">into</span>();
|
||||
<span class="ident">update_password_runner</span>(<span class="kw-2">&</span><span class="ident">username</span>, <span class="ident">update</span>, <span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>())
|
||||
} <span class="kw">else</span> {
|
||||
<span class="prelude-val">Err</span>(<span class="ident">ServiceError::WrongPassword</span>)
|
||||
}
|
||||
}
|
||||
<span class="prelude-val">Err</span>(<span class="ident">RowNotFound</span>) => <span class="prelude-val">Err</span>(<span class="ident">ServiceError::AccountNotFound</span>),
|
||||
<span class="prelude-val">Err</span>(<span class="kw">_</span>) => <span class="prelude-val">Err</span>(<span class="ident">ServiceError::InternalServerError</span>),
|
||||
<span class="kw">if</span> <span class="ident">Config::verify</span>(<span class="kw-2">&</span><span class="ident">res</span>.<span class="ident">hash</span>, <span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">password</span>)<span class="question-mark">?</span> {
|
||||
<span class="kw">let</span> <span class="ident">update</span>: <span class="ident">UpdatePassword</span> <span class="op">=</span> <span class="ident">payload</span>.<span class="ident">into_inner</span>().<span class="ident">into</span>();
|
||||
<span class="ident">update_password_runner</span>(<span class="kw-2">&</span><span class="ident">username</span>, <span class="ident">update</span>, <span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>())
|
||||
} <span class="kw">else</span> {
|
||||
<span class="prelude-val">Err</span>(<span class="ident">ServiceError::WrongPassword</span>)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -322,28 +293,27 @@
|
||||
}
|
||||
|
||||
<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">pub</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="kw">use</span> <span class="ident">actix_web::http::StatusCode</span>;
|
||||
<span class="kw">use</span> <span class="ident">actix_web::test</span>;
|
||||
|
||||
<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::api::v1::ROUTES</span>;
|
||||
<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::data::Data</span>;
|
||||
<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::tests</span>::<span class="kw-2">*</span>;
|
||||
|
||||
<span class="attribute">#[<span class="ident">actix_rt::test</span>]</span>
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">update_password_works</span>() {
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">update_password_works</span>() {
|
||||
<span class="kw">const</span> <span class="ident">NAME</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"updatepassuser"</span>;
|
||||
<span class="kw">const</span> <span class="ident">PASSWORD</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"longpassword2"</span>;
|
||||
<span class="kw">const</span> <span class="ident">EMAIL</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"updatepassuser@a.com"</span>;
|
||||
|
||||
{
|
||||
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="ident">Data::new</span>().<span class="kw">await</span>;
|
||||
<span class="ident">delete_user</span>(<span class="ident">NAME</span>, <span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span>;
|
||||
}
|
||||
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="ident">get_data</span>().<span class="kw">await</span>;
|
||||
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">data</span>;
|
||||
|
||||
<span class="kw">let</span> (<span class="ident">data</span>, <span class="kw">_</span>, <span class="ident">signin_resp</span>) <span class="op">=</span> <span class="ident">register_and_signin</span>(<span class="ident">NAME</span>, <span class="ident">EMAIL</span>, <span class="ident">PASSWORD</span>).<span class="kw">await</span>;
|
||||
<span class="ident">delete_user</span>(<span class="ident">data</span>, <span class="ident">NAME</span>).<span class="kw">await</span>;
|
||||
|
||||
<span class="kw">let</span> (<span class="kw">_</span>, <span class="ident">signin_resp</span>) <span class="op">=</span> <span class="ident">register_and_signin</span>(<span class="ident">data</span>, <span class="ident">NAME</span>, <span class="ident">EMAIL</span>, <span class="ident">PASSWORD</span>).<span class="kw">await</span>;
|
||||
<span class="kw">let</span> <span class="ident">cookies</span> <span class="op">=</span> <span class="macro">get_cookie!</span>(<span class="ident">signin_resp</span>);
|
||||
<span class="kw">let</span> <span class="ident">app</span> <span class="op">=</span> <span class="macro">get_app!</span>(<span class="ident">data</span>).<span class="kw">await</span>;
|
||||
|
||||
@@ -355,7 +325,7 @@
|
||||
<span class="ident">confirm_new_password</span>: <span class="ident">PASSWORD</span>.<span class="ident">into</span>(),
|
||||
};
|
||||
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">update_password_runner</span>(<span class="ident">NAME</span>, <span class="ident">update_password</span>.<span class="ident">into</span>(), <span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span>;
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">update_password_runner</span>(<span class="ident">NAME</span>, <span class="ident">update_password</span>.<span class="ident">into</span>(), <span class="ident">data</span>).<span class="kw">await</span>;
|
||||
<span class="macro">assert!</span>(<span class="ident">res</span>.<span class="ident">is_err</span>());
|
||||
<span class="macro">assert_eq!</span>(<span class="ident">res</span>, <span class="prelude-val">Err</span>(<span class="ident">ServiceError::PasswordsDontMatch</span>));
|
||||
|
||||
@@ -365,7 +335,7 @@
|
||||
<span class="ident">confirm_new_password</span>: <span class="ident">new_password</span>.<span class="ident">into</span>(),
|
||||
};
|
||||
|
||||
<span class="macro">assert!</span>(<span class="ident">update_password_runner</span>(<span class="ident">NAME</span>, <span class="ident">update_password</span>.<span class="ident">into</span>(), <span class="kw-2">&</span><span class="ident">data</span>)
|
||||
<span class="macro">assert!</span>(<span class="ident">update_password_runner</span>(<span class="ident">NAME</span>, <span class="ident">update_password</span>.<span class="ident">into</span>(), <span class="ident">data</span>)
|
||||
.<span class="kw">await</span>
|
||||
.<span class="ident">is_ok</span>());
|
||||
|
||||
@@ -376,6 +346,7 @@
|
||||
};
|
||||
|
||||
<span class="ident">bad_post_req_test</span>(
|
||||
<span class="ident">data</span>,
|
||||
<span class="ident">NAME</span>,
|
||||
<span class="ident">new_password</span>,
|
||||
<span class="ident">ROUTES</span>.<span class="ident">account</span>.<span class="ident">update_password</span>,
|
||||
@@ -391,6 +362,7 @@
|
||||
};
|
||||
|
||||
<span class="ident">bad_post_req_test</span>(
|
||||
<span class="ident">data</span>,
|
||||
<span class="ident">NAME</span>,
|
||||
<span class="ident">new_password</span>,
|
||||
<span class="ident">ROUTES</span>.<span class="ident">account</span>.<span class="ident">update_password</span>,
|
||||
|
||||
Reference in New Issue
Block a user