feat: migrate get captcha levels to use db_*

This commit is contained in:
realaravinth 2022-05-13 19:09:29 +05:30
parent ddb6d336f7
commit 176df3c7a7
No known key found for this signature in database
GPG key ID: AD9F0F08E855ED88
3 changed files with 15 additions and 44 deletions

View file

@ -17,6 +17,7 @@
use actix_identity::Identity;
use actix_web::{web, HttpResponse, Responder};
use libmcaptcha::defense::Level;
use serde::{Deserialize, Serialize};
use super::create::MCaptchaDetails;
@ -56,20 +57,8 @@ pub mod runner {
key: &str,
username: &str,
data: &AppData,
) -> ServiceResult<Vec<I32Levels>> {
let levels = sqlx::query_as!(
I32Levels,
"SELECT difficulty_factor, visitor_threshold FROM mcaptcha_levels WHERE
config_id = (
SELECT config_id FROM mcaptcha_config WHERE key = ($1)
AND user_id = (SELECT ID from mcaptcha_users WHERE name = $2)
)
ORDER BY difficulty_factor ASC;",
key,
&username
)
.fetch_all(&data.db)
.await?;
) -> ServiceResult<Vec<Level>> {
let levels = data.dblib.get_captcha_levels(Some(username), key).await?;
Ok(levels)
}

View file

@ -14,8 +14,6 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
use std::borrow::Cow;
use actix_identity::Identity;
use actix_web::{web, HttpResponse, Responder};
use libmcaptcha::defense::Level;
@ -45,19 +43,14 @@ pub async fn update_key(
loop {
key = get_random(32);
let mut key;
loop {
key = get_random(32);
match data
.dblib
.update_captcha_key(&username, &payload.key, &key)
.await
{
Ok(_) => break,
Err(DBError::SecretTaken) => continue,
Err(e) => return Err(e.into()),
}
match data
.dblib
.update_captcha_key(&username, &payload.key, &key)
.await
{
Ok(_) => break,
Err(DBError::SecretTaken) => continue,
Err(e) => return Err(e.into()),
}
}
@ -100,7 +93,6 @@ pub async fn update_captcha(
}
pub mod runner {
use futures::future::try_join_all;
use libmcaptcha::{master::messages::RemoveCaptcha, DefenseBuilder};
use super::*;

View file

@ -23,7 +23,6 @@ use libmcaptcha::{
};
use serde::{Deserialize, Serialize};
use super::I32Levels;
use crate::errors::*;
use crate::stats::record::record_fetch;
use crate::AppData;
@ -108,29 +107,20 @@ pub async fn get_config(
/// creates [MCaptcha][libmcaptcha::MCaptcha] and adds it to [Master][libmcaptcha::Defense]
async fn init_mcaptcha(data: &AppData, key: &str) -> ServiceResult<()> {
// get levels
let levels_fut = sqlx::query_as!(
I32Levels,
"SELECT difficulty_factor, visitor_threshold FROM mcaptcha_levels WHERE
config_id = (
SELECT config_id FROM mcaptcha_config WHERE key = ($1)
) ORDER BY difficulty_factor ASC;",
&key,
)
.fetch_all(&data.db);
let levels = data.dblib.get_captcha_levels(None, key).await?;
struct DurationResp {
duration: i32,
}
// get duration
let duration_fut = sqlx::query_as!(
let duration = sqlx::query_as!(
DurationResp,
"SELECT duration FROM mcaptcha_config
WHERE key = $1",
&key,
)
.fetch_one(&data.db);
.fetch_one(&data.db)
.await?;
//let (levels, duration) = futures::try_join!(levels_fut, duration_fut).await?;
let (levels, duration) = futures::try_join!(levels_fut, duration_fut)?;
// build defense
let mut defense = DefenseBuilder::default();