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_identity::Identity;
use actix_web::{web, HttpResponse, Responder}; use actix_web::{web, HttpResponse, Responder};
use libmcaptcha::defense::Level;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use super::create::MCaptchaDetails; use super::create::MCaptchaDetails;
@ -56,20 +57,8 @@ pub mod runner {
key: &str, key: &str,
username: &str, username: &str,
data: &AppData, data: &AppData,
) -> ServiceResult<Vec<I32Levels>> { ) -> ServiceResult<Vec<Level>> {
let levels = sqlx::query_as!( let levels = data.dblib.get_captcha_levels(Some(username), key).await?;
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?;
Ok(levels) Ok(levels)
} }

View File

@ -14,8 +14,6 @@
* You should have received a copy of the GNU Affero General Public License * 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/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
use std::borrow::Cow;
use actix_identity::Identity; use actix_identity::Identity;
use actix_web::{web, HttpResponse, Responder}; use actix_web::{web, HttpResponse, Responder};
use libmcaptcha::defense::Level; use libmcaptcha::defense::Level;
@ -42,10 +40,6 @@ pub async fn update_key(
let username = id.identity().unwrap(); let username = id.identity().unwrap();
let mut key; let mut key;
loop {
key = get_random(32);
let mut key;
loop { loop {
key = get_random(32); key = get_random(32);
@ -59,7 +53,6 @@ pub async fn update_key(
Err(e) => return Err(e.into()), Err(e) => return Err(e.into()),
} }
} }
}
let payload = payload.into_inner(); let payload = payload.into_inner();
let rename = RenameBuilder::default() let rename = RenameBuilder::default()
@ -100,7 +93,6 @@ pub async fn update_captcha(
} }
pub mod runner { pub mod runner {
use futures::future::try_join_all;
use libmcaptcha::{master::messages::RemoveCaptcha, DefenseBuilder}; use libmcaptcha::{master::messages::RemoveCaptcha, DefenseBuilder};
use super::*; use super::*;

View File

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