diff --git a/sqlx-data.json b/sqlx-data.json index 066c7ae4..7179fcf9 100644 --- a/sqlx-data.json +++ b/sqlx-data.json @@ -108,26 +108,6 @@ }, "query": "SELECT time FROM mcaptcha_pow_confirmed_stats \n WHERE \n config_id = (\n SELECT config_id FROM mcaptcha_config \n WHERE \n key = $1\n AND\n user_id = (\n SELECT \n ID FROM mcaptcha_users WHERE name = $2))\n ORDER BY time DESC" }, - "4a5dfbc5aeb2bab290a09640cc25223d484fbc7549e5bc54f33bab8616725031": { - "describe": { - "columns": [ - { - "name": "exists", - "ordinal": 0, - "type_info": "Bool" - } - ], - "nullable": [ - null - ], - "parameters": { - "Left": [ - "Text" - ] - } - }, - "query": "SELECT EXISTS (SELECT 1 from mcaptcha_config WHERE key = $1)" - }, "4c3a9fe30a4c6bd49ab1cb8883c4495993aa05f2991483b4f04913b2e5043a63": { "describe": { "columns": [ diff --git a/src/api/v1/mcaptcha/create.rs b/src/api/v1/mcaptcha/create.rs index 549e5140..8c0f87d0 100644 --- a/src/api/v1/mcaptcha/create.rs +++ b/src/api/v1/mcaptcha/create.rs @@ -14,8 +14,6 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ -use std::borrow::Cow; - use actix_identity::Identity; use actix_web::{web, HttpResponse, Responder}; use libmcaptcha::defense::Level; @@ -83,14 +81,14 @@ pub mod runner { duration, }; - match data.dblib.create_captcha(&username, &p).await { + match data.dblib.create_captcha(username, &p).await { Ok(_) => break, Err(DBError::SecretTaken) => continue, Err(e) => return Err(e.into()), } } data.dblib - .add_captcha_levels(&username, &key, &payload.levels) + .add_captcha_levels(username, &key, &payload.levels) .await?; let mcaptcha_config = MCaptchaDetails { name: payload.description.clone(), diff --git a/src/api/v1/mcaptcha/update.rs b/src/api/v1/mcaptcha/update.rs index 8ae9978b..18997c9c 100644 --- a/src/api/v1/mcaptcha/update.rs +++ b/src/api/v1/mcaptcha/update.rs @@ -160,7 +160,7 @@ pub mod runner { futs.push(update_fut); data.dblib - .add_captcha_levels(&username, &payload.key, &payload.levels) + .add_captcha_levels(username, &payload.key, &payload.levels) .await?; try_join_all(futs).await?; if let Err(ServiceError::CaptchaError(e)) = data diff --git a/src/api/v1/pow/get_config.rs b/src/api/v1/pow/get_config.rs index b56800c1..e797e80d 100644 --- a/src/api/v1/pow/get_config.rs +++ b/src/api/v1/pow/get_config.rs @@ -42,43 +42,65 @@ pub async fn get_config( payload: web::Json, data: AppData, ) -> ServiceResult { - let res = sqlx::query!( - "SELECT EXISTS (SELECT 1 from mcaptcha_config WHERE key = $1)", - &payload.key, - ) - .fetch_one(&data.db) - .await?; + // let res = sqlx::query!( + // "SELECT EXISTS (SELECT 1 from mcaptcha_config WHERE key = $1)", + // &payload.key, + // ) + // .fetch_one(&data.db) + // .await?; - if res.exists.is_none() { + //if res.exists.is_none() { + if !data.dblib.captcha_exists(None, &payload.key).await? { return Err(ServiceError::TokenNotFound); } let payload = payload.into_inner(); - match res.exists { - Some(true) => { - match data.captcha.get_pow(payload.key.clone()).await { - Ok(Some(config)) => { - record_fetch(&payload.key, &data.db).await; - Ok(HttpResponse::Ok().json(config)) - } - Ok(None) => { - init_mcaptcha(&data, &payload.key).await?; - let config = data - .captcha - .get_pow(payload.key.clone()) - .await - .expect("mcaptcha should be initialized and ready to go"); - // background it. would require data::Data to be static - // to satidfy lifetime - record_fetch(&payload.key, &data.db).await; - Ok(HttpResponse::Ok().json(config)) - } - Err(e) => Err(e.into()), - } - } - Some(false) => Err(ServiceError::TokenNotFound), - None => Err(ServiceError::TokenNotFound), + match data.captcha.get_pow(payload.key.clone()).await { + Ok(Some(config)) => { + record_fetch(&payload.key, &data.db).await; + Ok(HttpResponse::Ok().json(config)) + } + Ok(None) => { + init_mcaptcha(&data, &payload.key).await?; + let config = data + .captcha + .get_pow(payload.key.clone()) + .await + .expect("mcaptcha should be initialized and ready to go"); + // background it. would require data::Data to be static + // to satidfy lifetime + record_fetch(&payload.key, &data.db).await; + Ok(HttpResponse::Ok().json(config)) + } + Err(e) => Err(e.into()), } + + // match res.exists { + // Some(true) => { + // match data.captcha.get_pow(payload.key.clone()).await { + // Ok(Some(config)) => { + // record_fetch(&payload.key, &data.db).await; + // Ok(HttpResponse::Ok().json(config)) + // } + // Ok(None) => { + // init_mcaptcha(&data, &payload.key).await?; + // let config = data + // .captcha + // .get_pow(payload.key.clone()) + // .await + // .expect("mcaptcha should be initialized and ready to go"); + // // background it. would require data::Data to be static + // // to satidfy lifetime + // record_fetch(&payload.key, &data.db).await; + // Ok(HttpResponse::Ok().json(config)) + // } + // Err(e) => Err(e.into()), + // } + // } + // + // Some(false) => Err(ServiceError::TokenNotFound), + // None => Err(ServiceError::TokenNotFound), + // } } /// Call this when [MCaptcha][libmcaptcha::MCaptcha] is not in master. ///