mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2026-02-12 10:35:39 +00:00
Deploying to gh-pages from @ 2b10aa5d40 🚀
This commit is contained in:
@@ -106,7 +106,7 @@
|
||||
<span class="ident">id</span>: <span class="ident">Identity</span>,
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">Password</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">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">argon2_creds::Config</span>;
|
||||
<span class="kw">use</span> <span class="ident">sqlx::Error::RowNotFound</span>;
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
.<span class="kw">await</span>;
|
||||
|
||||
<span class="kw">match</span> <span class="ident">rec</span> {
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">s</span>) <span class="op">=</span><span class="op">></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="ident">runners::delete_user</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>;
|
||||
<span class="ident">id</span>.<span class="ident">forget</span>();
|
||||
@@ -130,8 +130,8 @@
|
||||
<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="op">=</span><span class="op">></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="op">=</span><span class="op">></span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::InternalServerError</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>),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
|
||||
<span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
|
||||
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">delete_user</span>(<span class="ident">name</span>: <span class="kw-2">&</span><span class="ident">str</span>, <span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">AppData</span>) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span>()<span class="op">></span> {
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">delete_user</span>(<span class="ident">name</span>: <span class="kw-2">&</span><span class="ident">str</span>, <span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">AppData</span>) -> <span class="ident">ServiceResult</span><span class="op"><</span>()<span class="op">></span> {
|
||||
<span class="macro">sqlx::query!</span>(<span class="string">"DELETE FROM mcaptcha_users WHERE name = ($1)"</span>, <span class="ident">name</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>;
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">email_exists</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">AccountCheckPayload</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"SELECT EXISTS (SELECT 1 from mcaptcha_users WHERE email = $1)"</span>,
|
||||
<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">val</span>,
|
||||
@@ -155,7 +155,7 @@
|
||||
<span class="ident">id</span>: <span class="ident">Identity</span>,
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">Email</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></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>;
|
||||
@@ -170,7 +170,7 @@
|
||||
.<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="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">Cow::from</span>(<span class="string">"23505"</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">"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="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::EmailTaken</span>);
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
}
|
||||
|
||||
<span class="kw">impl</span> <span class="ident">Account</span> {
|
||||
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">></span> <span class="ident">Account</span> {
|
||||
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -> <span class="ident">Account</span> {
|
||||
<span class="kw">let</span> <span class="ident">get_secret</span> <span class="op">=</span> <span class="string">"/api/v1/account/secret/get"</span>;
|
||||
<span class="kw">let</span> <span class="ident">update_secret</span> <span class="op">=</span> <span class="string">"/api/v1/account/secret/update"</span>;
|
||||
<span class="kw">let</span> <span class="ident">delete</span> <span class="op">=</span> <span class="string">"/api/v1/account/delete"</span>;
|
||||
|
||||
@@ -243,7 +243,7 @@
|
||||
}
|
||||
|
||||
<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident">ChangePasswordReqest</span><span class="op">></span> <span class="kw">for</span> <span class="ident">UpdatePassword</span> {
|
||||
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">s</span>: <span class="ident">ChangePasswordReqest</span>) <span class="op">-</span><span class="op">></span> <span class="self">Self</span> {
|
||||
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">s</span>: <span class="ident">ChangePasswordReqest</span>) -> <span class="self">Self</span> {
|
||||
<span class="ident">UpdatePassword</span> {
|
||||
<span class="ident">new_password</span>: <span class="ident">s</span>.<span class="ident">new_password</span>,
|
||||
<span class="ident">confirm_new_password</span>: <span class="ident">s</span>.<span class="ident">confirm_new_password</span>,
|
||||
@@ -255,7 +255,7 @@
|
||||
<span class="ident">user</span>: <span class="kw-2">&</span><span class="ident">str</span>,
|
||||
<span class="ident">update</span>: <span class="ident">UpdatePassword</span>,
|
||||
<span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">Data</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span>()<span class="op">></span> {
|
||||
) -> <span class="ident">ServiceResult</span><span class="op"><</span>()<span class="op">></span> {
|
||||
<span class="kw">if</span> <span class="ident">update</span>.<span class="ident">new_password</span> <span class="op">!</span><span class="op">=</span> <span class="ident">update</span>.<span class="ident">confirm_new_password</span> {
|
||||
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::PasswordsDontMatch</span>);
|
||||
}
|
||||
@@ -282,7 +282,7 @@
|
||||
<span class="ident">id</span>: <span class="ident">Identity</span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</span>,
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">ChangePasswordReqest</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="kw">if</span> <span class="ident">payload</span>.<span class="ident">new_password</span> <span class="op">!</span><span class="op">=</span> <span class="ident">payload</span>.<span class="ident">confirm_new_password</span> {
|
||||
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::PasswordsDontMatch</span>);
|
||||
}
|
||||
@@ -298,7 +298,7 @@
|
||||
.<span class="kw">await</span>;
|
||||
|
||||
<span class="kw">match</span> <span class="ident">rec</span> {
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">s</span>) <span class="op">=</span><span class="op">></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>;
|
||||
@@ -307,8 +307,8 @@
|
||||
<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="op">=</span><span class="op">></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="op">=</span><span class="op">></span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::InternalServerError</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>),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
<span class="ident">path</span> <span class="op">=</span> <span class="string">"crate::V1_API_ROUTES.account.get_secret"</span>,
|
||||
<span class="ident">wrap</span> <span class="op">=</span> <span class="string">"crate::CheckLogin"</span>
|
||||
)]</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">AppData</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="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">AppData</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">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="macro">sqlx::query_as!</span>(
|
||||
@@ -144,7 +144,7 @@
|
||||
<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">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></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>;
|
||||
@@ -162,7 +162,7 @@
|
||||
<span class="kw">if</span> <span class="ident">res</span>.<span class="ident">is_ok</span>() {
|
||||
<span class="kw">break</span>;
|
||||
} <span class="kw">else</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="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">Cow::from</span>(<span class="string">"23505"</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">"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_secret_key"</span>)
|
||||
{
|
||||
<span class="kw">continue</span>;
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">username_exists</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">AccountCheckPayload</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="kw">let</span> <span class="ident">resp</span> <span class="op">=</span> <span class="ident">runners::username_exists</span>(<span class="kw-2">&</span><span class="ident">payload</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="ident">json</span>(<span class="ident">resp</span>))
|
||||
}
|
||||
@@ -149,7 +149,7 @@
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">username_exists</span>(
|
||||
<span class="ident">payload</span>: <span class="kw-2">&</span><span class="ident">AccountCheckPayload</span>,
|
||||
<span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">AppData</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="ident">AccountCheckResp</span><span class="op">></span> {
|
||||
) -> <span class="ident">ServiceResult</span><span class="op"><</span><span class="ident">AccountCheckResp</span><span class="op">></span> {
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"SELECT EXISTS (SELECT 1 from mcaptcha_users WHERE name = $1)"</span>,
|
||||
<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">val</span>,
|
||||
@@ -183,7 +183,7 @@
|
||||
<span class="ident">id</span>: <span class="ident">Identity</span>,
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">Username</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></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">processed_uname</span> <span class="op">=</span> <span class="ident">data</span>.<span class="ident">creds</span>.<span class="ident">username</span>(<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">username</span>)<span class="question-mark">?</span>;
|
||||
@@ -199,7 +199,7 @@
|
||||
|
||||
<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="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">Cow::from</span>(<span class="string">"23505"</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">"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_name_key"</span>)
|
||||
{
|
||||
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::UsernameTaken</span>);
|
||||
|
||||
@@ -264,7 +264,7 @@
|
||||
}
|
||||
|
||||
<span class="kw">impl</span> <span class="ident">Auth</span> {
|
||||
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">></span> <span class="ident">Auth</span> {
|
||||
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -> <span class="ident">Auth</span> {
|
||||
<span class="kw">let</span> <span class="ident">login</span> <span class="op">=</span> <span class="string">"/api/v1/signin"</span>;
|
||||
<span class="kw">let</span> <span class="ident">logout</span> <span class="op">=</span> <span class="string">"/logout"</span>;
|
||||
<span class="kw">let</span> <span class="ident">register</span> <span class="op">=</span> <span class="string">"/api/v1/signup"</span>;
|
||||
@@ -304,7 +304,7 @@
|
||||
}
|
||||
|
||||
<span class="doccomment">/// returns Ok(()) when everything checks out and the user is authenticated. Erros otherwise</span>
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">login_runner</span>(<span class="ident">payload</span>: <span class="ident">Login</span>, <span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">AppData</span>) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="ident">String</span><span class="op">></span> {
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">login_runner</span>(<span class="ident">payload</span>: <span class="ident">Login</span>, <span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">AppData</span>) -> <span class="ident">ServiceResult</span><span class="op"><</span><span class="ident">String</span><span class="op">></span> {
|
||||
<span class="kw">use</span> <span class="ident">argon2_creds::Config</span>;
|
||||
<span class="kw">use</span> <span class="ident">sqlx::Error::RowNotFound</span>;
|
||||
|
||||
@@ -332,13 +332,13 @@
|
||||
.<span class="kw">await</span>;
|
||||
|
||||
<span class="kw">match</span> <span class="ident">email_fut</span> {
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">s</span>) <span class="op">=</span><span class="op">></span> {
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">s</span>) => {
|
||||
<span class="ident">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="prelude-val">Ok</span>(<span class="ident">s</span>.<span class="ident">name</span>)
|
||||
}
|
||||
|
||||
<span class="prelude-val">Err</span>(<span class="ident">RowNotFound</span>) <span class="op">=</span><span class="op">></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="op">=</span><span class="op">></span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::InternalServerError</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">else</span> {
|
||||
<span class="kw">let</span> <span class="ident">username_fut</span> <span class="op">=</span> <span class="macro">sqlx::query_as!</span>(
|
||||
@@ -350,12 +350,12 @@
|
||||
.<span class="kw">await</span>;
|
||||
|
||||
<span class="kw">match</span> <span class="ident">username_fut</span> {
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">s</span>) <span class="op">=</span><span class="op">></span> {
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">s</span>) => {
|
||||
<span class="ident">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="prelude-val">Ok</span>(<span class="ident">payload</span>.<span class="ident">login</span>)
|
||||
}
|
||||
<span class="prelude-val">Err</span>(<span class="ident">RowNotFound</span>) <span class="op">=</span><span class="op">></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="op">=</span><span class="op">></span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::InternalServerError</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>),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -363,7 +363,7 @@
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">register_runner</span>(
|
||||
<span class="ident">payload</span>: <span class="kw-2">&</span><span class="ident">Register</span>,
|
||||
<span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">AppData</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span>()<span class="op">></span> {
|
||||
) -> <span class="ident">ServiceResult</span><span class="op"><</span>()<span class="op">></span> {
|
||||
<span class="kw">if</span> <span class="op">!</span><span class="ident"><span class="kw">crate</span>::SETTINGS</span>.<span class="ident">allow_registration</span> {
|
||||
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::ClosedForRegistration</span>);
|
||||
}
|
||||
@@ -408,7 +408,7 @@
|
||||
<span class="kw">if</span> <span class="ident">res</span>.<span class="ident">is_ok</span>() {
|
||||
<span class="kw">break</span>;
|
||||
} <span class="kw">else</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="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">Cow::from</span>(<span class="string">"23505"</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">"23505"</span>)) {
|
||||
<span class="kw">let</span> <span class="ident">msg</span> <span class="op">=</span> <span class="ident">err</span>.<span class="ident">message</span>();
|
||||
<span class="kw">if</span> <span class="ident">msg</span>.<span class="ident">contains</span>(<span class="string">"mcaptcha_users_name_key"</span>) {
|
||||
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::UsernameTaken</span>);
|
||||
@@ -437,7 +437,7 @@
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">register</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">runners::Register</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="ident">runners::register_runner</span>(<span class="kw-2">&</span><span class="ident">payload</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>())
|
||||
}
|
||||
@@ -447,14 +447,14 @@
|
||||
<span class="ident">id</span>: <span class="ident">Identity</span>,
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">runners::Login</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="kw">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">runners::login_runner</span>(<span class="ident">payload</span>.<span class="ident">into_inner</span>(), <span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
<span class="ident">id</span>.<span class="ident">remember</span>(<span class="ident">username</span>);
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>())
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">my_codegen::get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">"crate::V1_API_ROUTES.auth.logout"</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">"crate::CheckLogin"</span>)]</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">async</span> <span class="kw">fn</span> <span class="ident">signout</span>(<span class="ident">id</span>: <span class="ident">Identity</span>) -> <span class="kw">impl</span> <span class="ident">Responder</span> {
|
||||
<span class="kw">if</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">is_some</span>() {
|
||||
<span class="ident">id</span>.<span class="ident">forget</span>();
|
||||
}
|
||||
|
||||
@@ -373,7 +373,7 @@
|
||||
}
|
||||
|
||||
<span class="kw">impl</span> <span class="ident">MCaptcha</span> {
|
||||
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">></span> <span class="ident">MCaptcha</span> {
|
||||
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -> <span class="ident">MCaptcha</span> {
|
||||
<span class="ident">MCaptcha</span> {
|
||||
<span class="ident">update_key</span>: <span class="string">"/api/v1/mcaptcha/update/key"</span>,
|
||||
<span class="ident">delete</span>: <span class="string">"/api/v1/mcaptcha/delete"</span>,
|
||||
@@ -407,7 +407,7 @@
|
||||
<span class="ident">description</span>: <span class="kw-2">&</span><span class="ident">str</span>,
|
||||
<span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">AppData</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="ident">MCaptchaDetails</span><span class="op">></span> {
|
||||
) -> <span class="ident">ServiceResult</span><span class="op"><</span><span class="ident">MCaptchaDetails</span><span class="op">></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>;
|
||||
|
||||
@@ -429,8 +429,8 @@
|
||||
.<span class="kw">await</span>;
|
||||
|
||||
<span class="kw">match</span> <span class="ident">res</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="op">></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::from</span>(<span class="string">"23505"</span>))
|
||||
<span class="prelude-val">Err</span>(<span class="ident">sqlx::Error::Database</span>(<span class="ident">err</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">"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_config_key_key"</span>)
|
||||
{
|
||||
<span class="kw">continue</span>;
|
||||
@@ -438,9 +438,9 @@
|
||||
<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="prelude-val">Err</span>(<span class="ident">e</span>) <span class="op">=</span><span class="op">></span> <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">e</span>.<span class="ident">into</span>()),
|
||||
<span class="prelude-val">Err</span>(<span class="ident">e</span>) => <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">e</span>.<span class="ident">into</span>()),
|
||||
|
||||
<span class="prelude-val">Ok</span>(<span class="kw">_</span>) <span class="op">=</span><span class="op">></span> {
|
||||
<span class="prelude-val">Ok</span>(<span class="kw">_</span>) => {
|
||||
<span class="ident">resp</span> <span class="op">=</span> <span class="ident">MCaptchaDetails</span> {
|
||||
<span class="ident">key</span>,
|
||||
<span class="ident">name</span>: <span class="ident">description</span>.<span class="ident">to_owned</span>(),
|
||||
@@ -460,7 +460,7 @@
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">MCaptchaDetails</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></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>;
|
||||
|
||||
@@ -470,7 +470,7 @@
|
||||
<span class="kw">if</span> <span class="ident">res</span>.<span class="ident">is_ok</span>() {
|
||||
<span class="kw">break</span>;
|
||||
} <span class="kw">else</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="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">Cow::from</span>(<span class="string">"23505"</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">"23505"</span>)) {
|
||||
<span class="kw">continue</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>());
|
||||
@@ -499,7 +499,7 @@
|
||||
<span class="ident">old_key</span>: <span class="kw-2">&</span><span class="ident">str</span>,
|
||||
<span class="ident">username</span>: <span class="kw-2">&</span><span class="ident">str</span>,
|
||||
<span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">AppData</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">sqlx::Error</span><span class="op">></span> {
|
||||
) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">sqlx::Error</span><span class="op">></span> {
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"UPDATE mcaptcha_config SET key = $1
|
||||
WHERE key = $2 AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = $3)"</span>,
|
||||
@@ -526,7 +526,7 @@
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">DeleteCaptcha</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">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">argon2_creds::Config</span>;
|
||||
<span class="kw">use</span> <span class="ident">sqlx::Error::RowNotFound</span>;
|
||||
|
||||
@@ -546,7 +546,7 @@
|
||||
.<span class="kw">await</span>;
|
||||
|
||||
<span class="kw">match</span> <span class="ident">rec</span> {
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">rec</span>) <span class="op">=</span><span class="op">></span> {
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">rec</span>) => {
|
||||
<span class="kw">if</span> <span class="ident">Config::verify</span>(<span class="kw-2">&</span><span class="ident">rec</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">payload</span> <span class="op">=</span> <span class="ident">payload</span>.<span class="ident">into_inner</span>();
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
@@ -579,8 +579,8 @@
|
||||
<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="op">=</span><span class="op">></span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::UsernameNotFound</span>),
|
||||
<span class="prelude-val">Err</span>(<span class="kw">_</span>) <span class="op">=</span><span class="op">></span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::InternalServerError</span>),
|
||||
<span class="prelude-val">Err</span>(<span class="ident">RowNotFound</span>) => <span class="prelude-val">Err</span>(<span class="ident">ServiceError::UsernameNotFound</span>),
|
||||
<span class="prelude-val">Err</span>(<span class="kw">_</span>) => <span class="prelude-val">Err</span>(<span class="ident">ServiceError::InternalServerError</span>),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -597,7 +597,7 @@
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">StatsPayload</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></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">stats</span> <span class="op">=</span> <span class="ident">Stats::new</span>(<span class="kw-2">&</span><span class="ident">username</span>, <span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">key</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">stats</span> <span class="op">=</span> <span class="ident">StatsUnixTimestamp::from_stats</span>(<span class="kw-2">&</span><span class="ident">stats</span>);
|
||||
|
||||
@@ -208,7 +208,7 @@
|
||||
<span class="kw">pub</span> <span class="ident">get</span>: <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span>,
|
||||
}
|
||||
<span class="kw">impl</span> <span class="ident">Duration</span> {
|
||||
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">></span> <span class="ident">Duration</span> {
|
||||
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -> <span class="ident">Duration</span> {
|
||||
<span class="ident">Duration</span> {
|
||||
<span class="ident">update</span>: <span class="string">"/api/v1/mcaptcha/domain/token/duration/update"</span>,
|
||||
<span class="ident">get</span>: <span class="string">"/api/v1/mcaptcha/domain/token/duration/get"</span>,
|
||||
@@ -231,7 +231,7 @@
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">UpdateDuration</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></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> {
|
||||
@@ -272,7 +272,7 @@
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">MCaptchaDetails</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></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="macro">sqlx::query_as!</span>(
|
||||
|
||||
@@ -393,7 +393,7 @@
|
||||
}
|
||||
|
||||
<span class="kw">impl</span> <span class="ident">Levels</span> {
|
||||
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">></span> <span class="ident">Levels</span> {
|
||||
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -> <span class="ident">Levels</span> {
|
||||
<span class="kw">let</span> <span class="ident">add</span> <span class="op">=</span> <span class="string">"/api/v1/mcaptcha/add"</span>;
|
||||
<span class="kw">let</span> <span class="ident">update</span> <span class="op">=</span> <span class="string">"/api/v1/mcaptcha/update"</span>;
|
||||
<span class="kw">let</span> <span class="ident">get</span> <span class="op">=</span> <span class="string">"/api/v1/mcaptcha/get"</span>;
|
||||
@@ -422,7 +422,7 @@
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">AddLevels</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></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::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>();
|
||||
|
||||
@@ -483,7 +483,7 @@
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">UpdateLevels</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></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::default</span>();
|
||||
|
||||
@@ -567,7 +567,7 @@
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">MCaptchaDetails</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></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>;
|
||||
@@ -590,7 +590,7 @@
|
||||
<span class="ident">key</span>: <span class="kw-2">&</span><span class="ident">str</span>,
|
||||
<span class="ident">username</span>: <span class="kw-2">&</span><span class="ident">str</span>,
|
||||
<span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">AppData</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">I32Levels</span><span class="op">></span><span class="op">></span> {
|
||||
) -> <span class="ident">ServiceResult</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">I32Levels</span><span class="op">></span><span class="op">></span> {
|
||||
<span class="kw">let</span> <span class="ident">levels</span> <span class="op">=</span> <span class="macro">sqlx::query_as!</span>(
|
||||
<span class="ident">I32Levels</span>,
|
||||
<span class="string">"SELECT difficulty_factor, visitor_threshold FROM mcaptcha_levels WHERE
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">duration</span>;
|
||||
<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">levels</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">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="ident">String</span> {
|
||||
<span class="kw">use</span> <span class="ident">std::iter</span>;
|
||||
|
||||
<span class="kw">use</span> <span class="ident">rand</span>::{<span class="ident">distributions::Alphanumeric</span>, <span class="ident">rngs::ThreadRng</span>, <span class="ident">thread_rng</span>, <span class="ident">Rng</span>};
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
}
|
||||
|
||||
<span class="kw">impl</span> <span class="ident">Meta</span> {
|
||||
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">></span> <span class="self">Self</span> {
|
||||
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -> <span class="self">Self</span> {
|
||||
<span class="self">Self</span> {
|
||||
<span class="ident">build_details</span>: <span class="string">"/api/v1/meta/build"</span>,
|
||||
<span class="ident">health</span>: <span class="string">"/api/v1/meta/health"</span>,
|
||||
@@ -198,7 +198,7 @@
|
||||
|
||||
<span class="doccomment">/// emmits build details of the bninary</span>
|
||||
<span class="attribute">#[<span class="ident">my_codegen::get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">"crate::V1_API_ROUTES.meta.build_details"</span>)]</span>
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">build_details</span>() <span class="op">-</span><span class="op">></span> <span class="kw">impl</span> <span class="ident">Responder</span> {
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">build_details</span>() -> <span class="kw">impl</span> <span class="ident">Responder</span> {
|
||||
<span class="kw">let</span> <span class="ident">build</span> <span class="op">=</span> <span class="ident">BuildDetails</span> {
|
||||
<span class="ident">version</span>: <span class="ident">VERSION</span>,
|
||||
<span class="ident">git_commit_hash</span>: <span class="ident">GIT_COMMIT_HASH</span>,
|
||||
@@ -215,14 +215,14 @@
|
||||
}
|
||||
|
||||
<span class="kw">impl</span> <span class="ident">Health</span> {
|
||||
<span class="kw">fn</span> <span class="ident">is_redis</span>(<span class="ident">redis</span>: <span class="kw-2">&</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">bool</span><span class="op">></span>) <span class="op">-</span><span class="op">></span> <span class="ident">bool</span> {
|
||||
<span class="kw">fn</span> <span class="ident">is_redis</span>(<span class="ident">redis</span>: <span class="kw-2">&</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">bool</span><span class="op">></span>) -> <span class="ident">bool</span> {
|
||||
<span class="ident">redis</span>.<span class="ident">is_none</span>()
|
||||
}
|
||||
}
|
||||
|
||||
<span class="doccomment">/// checks all components of the system</span>
|
||||
<span class="attribute">#[<span class="ident">my_codegen::get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">"crate::V1_API_ROUTES.meta.health"</span>)]</span>
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">health</span>(<span class="ident">data</span>: <span class="ident">AppData</span>) <span class="op">-</span><span class="op">></span> <span class="kw">impl</span> <span class="ident">Responder</span> {
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">health</span>(<span class="ident">data</span>: <span class="ident">AppData</span>) -> <span class="kw">impl</span> <span class="ident">Responder</span> {
|
||||
<span class="kw">use</span> <span class="ident">sqlx::Connection</span>;
|
||||
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">resp_builder</span> <span class="op">=</span> <span class="ident">HealthBuilder::default</span>();
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">AddNotification</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="kw">let</span> <span class="ident">sender</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
|
||||
<span class="comment">// TODO handle error where payload.to doesnt exist</span>
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
|
||||
@@ -206,7 +206,7 @@
|
||||
}
|
||||
|
||||
<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident">Notification</span><span class="op">></span> <span class="kw">for</span> <span class="ident">NotificationResp</span> {
|
||||
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">n</span>: <span class="ident">Notification</span>) <span class="op">-</span><span class="op">></span> <span class="self">Self</span> {
|
||||
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">n</span>: <span class="ident">Notification</span>) -> <span class="self">Self</span> {
|
||||
<span class="ident">NotificationResp</span> {
|
||||
<span class="ident">name</span>: <span class="ident">n</span>.<span class="ident">name</span>.<span class="ident">unwrap</span>(),
|
||||
<span class="ident">heading</span>: <span class="ident">n</span>.<span class="ident">heading</span>.<span class="ident">unwrap</span>(),
|
||||
@@ -225,7 +225,7 @@
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">get_notification</span>(
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="kw">let</span> <span class="ident">receiver</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
|
||||
<span class="comment">// TODO handle error where payload.to doesnt exist</span>
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">get_notification</span>(
|
||||
<span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">AppData</span>,
|
||||
<span class="ident">receiver</span>: <span class="kw-2">&</span><span class="ident">str</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">Notification</span><span class="op">></span><span class="op">></span> {
|
||||
) -> <span class="ident">ServiceResult</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">Notification</span><span class="op">></span><span class="op">></span> {
|
||||
<span class="comment">// TODO handle error where payload.to doesnt exist</span>
|
||||
|
||||
<span class="kw">let</span> <span class="ident">notifications</span> <span class="op">=</span> <span class="macro">sqlx::query_file_as!</span>(
|
||||
|
||||
@@ -200,7 +200,7 @@
|
||||
<span class="ident">data</span>: <span class="ident">AppData</span>,
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">MarkReadReq</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="kw">let</span> <span class="ident">receiver</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
|
||||
<span class="comment">// TODO handle error where payload.to doesnt exist</span>
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
}
|
||||
|
||||
<span class="kw">impl</span> <span class="ident">Notifications</span> {
|
||||
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">></span> <span class="ident">Notifications</span> {
|
||||
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -> <span class="ident">Notifications</span> {
|
||||
<span class="ident">Notifications</span> {
|
||||
<span class="ident">add</span>: <span class="string">"/api/v1/notifications/add"</span>,
|
||||
<span class="ident">mark_read</span>: <span class="string">"/api/v1/notifications/read"</span>,
|
||||
|
||||
@@ -230,7 +230,7 @@
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">get_config</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">GetConfigPayload</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"SELECT EXISTS (SELECT 1 from mcaptcha_config WHERE key = $1)"</span>,
|
||||
<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">key</span>,
|
||||
@@ -243,13 +243,13 @@
|
||||
}
|
||||
<span class="kw">let</span> <span class="ident">payload</span> <span class="op">=</span> <span class="ident">payload</span>.<span class="ident">into_inner</span>();
|
||||
<span class="kw">match</span> <span class="ident">res</span>.<span class="ident">exists</span> {
|
||||
<span class="prelude-val">Some</span>(<span class="bool-val">true</span>) <span class="op">=</span><span class="op">></span> {
|
||||
<span class="prelude-val">Some</span>(<span class="bool-val">true</span>) => {
|
||||
<span class="kw">match</span> <span class="ident">data</span>.<span class="ident">captcha</span>.<span class="ident">get_pow</span>(<span class="ident">payload</span>.<span class="ident">key</span>.<span class="ident">clone</span>()).<span class="kw">await</span> {
|
||||
<span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">config</span>)) <span class="op">=</span><span class="op">></span> {
|
||||
<span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">config</span>)) => {
|
||||
<span class="ident">record_fetch</span>(<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">key</span>, <span class="kw-2">&</span><span class="ident">data</span>.<span class="ident">db</span>).<span class="kw">await</span>;
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>().<span class="ident">json</span>(<span class="ident">config</span>))
|
||||
}
|
||||
<span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>) <span class="op">=</span><span class="op">></span> {
|
||||
<span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>) => {
|
||||
<span class="ident">init_mcaptcha</span>(<span class="kw-2">&</span><span class="ident">data</span>, <span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">key</span>).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
<span class="kw">let</span> <span class="ident">config</span> <span class="op">=</span> <span class="ident">data</span>
|
||||
.<span class="ident">captcha</span>
|
||||
@@ -261,19 +261,19 @@
|
||||
<span class="ident">record_fetch</span>(<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">key</span>, <span class="kw-2">&</span><span class="ident">data</span>.<span class="ident">db</span>).<span class="kw">await</span>;
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>().<span class="ident">json</span>(<span class="ident">config</span>))
|
||||
}
|
||||
<span class="prelude-val">Err</span>(<span class="ident">e</span>) <span class="op">=</span><span class="op">></span> <span class="prelude-val">Err</span>(<span class="ident">e</span>.<span class="ident">into</span>()),
|
||||
<span class="prelude-val">Err</span>(<span class="ident">e</span>) => <span class="prelude-val">Err</span>(<span class="ident">e</span>.<span class="ident">into</span>()),
|
||||
}
|
||||
}
|
||||
|
||||
<span class="prelude-val">Some</span>(<span class="bool-val">false</span>) <span class="op">=</span><span class="op">></span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::TokenNotFound</span>),
|
||||
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::TokenNotFound</span>),
|
||||
<span class="prelude-val">Some</span>(<span class="bool-val">false</span>) => <span class="prelude-val">Err</span>(<span class="ident">ServiceError::TokenNotFound</span>),
|
||||
<span class="prelude-val">None</span> => <span class="prelude-val">Err</span>(<span class="ident">ServiceError::TokenNotFound</span>),
|
||||
}
|
||||
}
|
||||
<span class="doccomment">/// Call this when [MCaptcha][libmcaptcha::MCaptcha] is not in master.</span>
|
||||
<span class="doccomment">///</span>
|
||||
<span class="doccomment">/// This fn gets mcaptcha config from database, builds [Defense][libmcaptcha::Defense],</span>
|
||||
<span class="doccomment">/// creates [MCaptcha][libmcaptcha::MCaptcha] and adds it to [Master][libmcaptcha::Defense]</span>
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">init_mcaptcha</span>(<span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">AppData</span>, <span class="ident">key</span>: <span class="kw-2">&</span><span class="ident">str</span>) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span>()<span class="op">></span> {
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">init_mcaptcha</span>(<span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">AppData</span>, <span class="ident">key</span>: <span class="kw-2">&</span><span class="ident">str</span>) -> <span class="ident">ServiceResult</span><span class="op"><</span>()<span class="op">></span> {
|
||||
<span class="comment">// get levels</span>
|
||||
<span class="kw">let</span> <span class="ident">levels_fut</span> <span class="op">=</span> <span class="macro">sqlx::query_as!</span>(
|
||||
<span class="ident">I32Levels</span>,
|
||||
|
||||
@@ -148,9 +148,9 @@
|
||||
}
|
||||
|
||||
<span class="macro">macro_rules!</span> <span class="ident">rm_scope</span> {
|
||||
(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span>) <span class="op">=</span><span class="op">></span> {
|
||||
(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span>) => {
|
||||
<span class="doccomment">/// remove scope for $name route</span>
|
||||
<span class="kw">pub</span> <span class="kw">fn</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>(<span class="kw-2">&</span><span class="self">self</span>) <span class="op">-</span><span class="op">></span> <span class="kw-2">&</span><span class="ident">str</span> {
|
||||
<span class="kw">pub</span> <span class="kw">fn</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span><span class="ident">str</span> {
|
||||
<span class="self">self</span>.<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>
|
||||
<span class="comment">//.strip_prefix(&self.scope[..self.scope.len() - 1])</span>
|
||||
.<span class="ident">strip_prefix</span>(<span class="self">self</span>.<span class="ident">scope</span>)
|
||||
@@ -160,7 +160,7 @@
|
||||
}
|
||||
|
||||
<span class="kw">impl</span> <span class="ident">PoW</span> {
|
||||
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">></span> <span class="self">Self</span> {
|
||||
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -> <span class="self">Self</span> {
|
||||
<span class="comment">// date: 2021-11-29 16:31</span>
|
||||
<span class="comment">// commit: 6eb75d7</span>
|
||||
<span class="comment">// route 404s when scope contained trailing slash</span>
|
||||
|
||||
@@ -175,7 +175,7 @@
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">verify_pow</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">Work</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">payload</span>.<span class="ident">key</span>.<span class="ident">clone</span>();
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">data</span>.<span class="ident">captcha</span>.<span class="ident">verify_pow</span>(<span class="ident">payload</span>.<span class="ident">into_inner</span>()).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
<span class="ident">record_solve</span>(<span class="kw-2">&</span><span class="ident">key</span>, <span class="kw-2">&</span><span class="ident">data</span>.<span class="ident">db</span>).<span class="kw">await</span>;
|
||||
|
||||
@@ -196,7 +196,7 @@
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">validate_captcha_token</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">VerifyCaptchaResult</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">payload</span>.<span class="ident">key</span>.<span class="ident">clone</span>();
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">data</span>
|
||||
.<span class="ident">captcha</span>
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
}
|
||||
|
||||
<span class="kw">impl</span> <span class="ident">Routes</span> {
|
||||
<span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">></span> <span class="ident">Routes</span> {
|
||||
<span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -> <span class="ident">Routes</span> {
|
||||
<span class="ident">Routes</span> {
|
||||
<span class="ident">auth</span>: <span class="ident">Auth::new</span>(),
|
||||
<span class="ident">account</span>: <span class="ident">Account::new</span>(),
|
||||
|
||||
Reference in New Issue
Block a user