delete captcha

This commit is contained in:
realaravinth
2021-07-20 13:02:53 +05:30
parent f7c9217667
commit 00768cce34
3 changed files with 23 additions and 7 deletions

View File

@@ -18,7 +18,7 @@ use std::borrow::Cow;
use actix_identity::Identity;
use actix_web::{web, HttpResponse, Responder};
use libmcaptcha::master::messages::RenameBuilder;
use libmcaptcha::master::messages::{RemoveCaptcha, RenameBuilder};
use serde::{Deserialize, Serialize};
use super::get_random;
@@ -205,6 +205,7 @@ async fn delete_mcaptcha(
match rec {
Ok(rec) => {
if Config::verify(&rec.password, &payload.password)? {
let payload = payload.into_inner();
sqlx::query!(
"DELETE FROM mcaptcha_levels
WHERE config_id = (
@@ -224,6 +225,12 @@ async fn delete_mcaptcha(
)
.execute(&data.db)
.await?;
if let Err(err) = data.captcha.remove(RemoveCaptcha(payload.key)).await {
log::error!(
"Error while trying to remove captcha from cache {}",
err
);
}
Ok(HttpResponse::Ok())
} else {
Err(ServiceError::WrongPassword)

View File

@@ -32,7 +32,7 @@ use libmcaptcha::{
cache::messages::VerifyCaptchaResult,
cache::Save,
errors::CaptchaResult,
master::messages::{AddSite, Rename},
master::messages::{AddSite, RemoveCaptcha, Rename},
master::{embedded::master::Master as EmbeddedMaster, Master as MasterTrait},
pow::ConfigBuilder as PoWConfigBuilder,
pow::PoWConfig,
@@ -100,6 +100,15 @@ impl SystemGroup {
Ok(())
}
/// utility function to remove captcha
pub async fn remove(&self, msg: RemoveCaptcha) -> CaptchaResult<()> {
match self {
Self::Embedded(val) => val.master.send(msg).await?,
Self::Redis(val) => val.master.send(msg).await?,
};
Ok(())
}
fn new_system<A: Save, B: MasterTrait>(m: Addr<B>, c: Addr<A>) -> System<A, B> {
let pow = PoWConfigBuilder::default()
.salt(SETTINGS.pow.salt.clone())