Deploying to gh-pages from @ 3710c8f653 🚀

This commit is contained in:
realaravinth
2022-05-27 13:55:17 +00:00
parent d4575e7ebf
commit 0cad395013
608 changed files with 13753 additions and 4723 deletions

View File

@@ -73,30 +73,6 @@
<span id="68">68</span>
<span id="69">69</span>
<span id="70">70</span>
<span id="71">71</span>
<span id="72">72</span>
<span id="73">73</span>
<span id="74">74</span>
<span id="75">75</span>
<span id="76">76</span>
<span id="77">77</span>
<span id="78">78</span>
<span id="79">79</span>
<span id="80">80</span>
<span id="81">81</span>
<span id="82">82</span>
<span id="83">83</span>
<span id="84">84</span>
<span id="85">85</span>
<span id="86">86</span>
<span id="87">87</span>
<span id="88">88</span>
<span id="89">89</span>
<span id="90">90</span>
<span id="91">91</span>
<span id="92">92</span>
<span id="93">93</span>
<span id="94">94</span>
</pre><pre class="rust"><code><span class="comment">/*
* Copyright (C) 2022 Aravinth Manivannan &lt;realaravinth@batsense.net&gt;
*
@@ -113,10 +89,9 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.
*/</span>
<span class="kw">use</span> <span class="ident">std::borrow::Cow</span>;
<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">db_core::UpdateEmail</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">AccountCheckPayload</span>, <span class="ident">AccountCheckResp</span>};
@@ -133,20 +108,9 @@
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">AccountCheckPayload</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</span>,
) -&gt; <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="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="macro">sqlx::query!</span>(
<span class="string">&quot;SELECT EXISTS (SELECT 1 from mcaptcha_users WHERE email = $1)&quot;</span>,
<span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">val</span>,
)
.<span class="ident">fetch_one</span>(<span class="kw-2">&amp;</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">exists</span> <span class="op">=</span> <span class="ident">data</span>.<span class="ident">db</span>.<span class="ident">email_exists</span>(<span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">val</span>).<span class="kw">await</span><span class="question-mark">?</span>;
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">resp</span> <span class="op">=</span> <span class="ident">AccountCheckResp</span> { <span class="ident">exists</span>: <span class="bool-val">false</span> };
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">x</span>) <span class="op">=</span> <span class="ident">res</span>.<span class="ident">exists</span> {
<span class="kw">if</span> <span class="ident">x</span> {
<span class="ident">resp</span>.<span class="ident">exists</span> <span class="op">=</span> <span class="bool-val">true</span>;
}
}
<span class="kw">let</span> <span class="ident">resp</span> <span class="op">=</span> <span class="ident">AccountCheckResp</span> { <span class="ident">exists</span> };
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>().<span class="ident">json</span>(<span class="ident">resp</span>))
}
@@ -165,25 +129,13 @@
<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>;
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="macro">sqlx::query!</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="ident">res</span>.<span class="ident">is_err</span>() {
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Err</span>(<span class="ident">sqlx::Error::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="prelude-val">Some</span>(<span class="ident">Cow::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="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::EmailTaken</span>);
} <span class="kw">else</span> {
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">sqlx::Error::Database</span>(<span class="ident">err</span>).<span class="ident">into</span>());
}
};
}
<span class="kw">let</span> <span class="ident">update_email</span> <span class="op">=</span> <span class="ident">UpdateEmail</span> {
<span class="ident">username</span>: <span class="kw-2">&amp;</span><span class="ident">username</span>,
<span class="ident">new_email</span>: <span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">email</span>,
};
<span class="ident">data</span>.<span class="ident">db</span>.<span class="ident">update_email</span>(<span class="kw-2">&amp;</span><span class="ident">update_email</span>).<span class="kw">await</span><span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>())
}