mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2025-11-24 14:35:46 +00:00
feat: advance sitekey edit now allows modifying publication status
This commit is contained in:
parent
6834e555d8
commit
22edb04ce2
@ -130,6 +130,7 @@ async fn create(
|
|||||||
levels,
|
levels,
|
||||||
duration: data.settings.captcha.default_difficulty_strategy.duration,
|
duration: data.settings.captcha.default_difficulty_strategy.duration,
|
||||||
description: payload.description,
|
description: payload.description,
|
||||||
|
publish_benchmarks: payload.publish_benchmarks,
|
||||||
};
|
};
|
||||||
|
|
||||||
let mcaptcha_config = create_runner(&msg, &data, &username).await?;
|
let mcaptcha_config = create_runner(&msg, &data, &username).await?;
|
||||||
@ -137,11 +138,6 @@ async fn create(
|
|||||||
.add_traffic_pattern(&username, &mcaptcha_config.key, &pattern)
|
.add_traffic_pattern(&username, &mcaptcha_config.key, &pattern)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
if payload.publish_benchmarks {
|
|
||||||
data.db
|
|
||||||
.analytics_create_psuedo_id_if_not_exists(&mcaptcha_config.key)
|
|
||||||
.await?;
|
|
||||||
}
|
|
||||||
Ok(HttpResponse::Ok().json(mcaptcha_config))
|
Ok(HttpResponse::Ok().json(mcaptcha_config))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,21 +162,12 @@ async fn update(
|
|||||||
let levels =
|
let levels =
|
||||||
calculate(&pattern, &data.settings.captcha.default_difficulty_strategy)?;
|
calculate(&pattern, &data.settings.captcha.default_difficulty_strategy)?;
|
||||||
|
|
||||||
if payload.pattern.publish_benchmarks {
|
|
||||||
data.db
|
|
||||||
.analytics_create_psuedo_id_if_not_exists(&payload.key)
|
|
||||||
.await?;
|
|
||||||
} else {
|
|
||||||
data.db
|
|
||||||
.analytics_delete_all_records_for_campaign(&payload.key)
|
|
||||||
.await?;
|
|
||||||
}
|
|
||||||
|
|
||||||
let msg = UpdateCaptcha {
|
let msg = UpdateCaptcha {
|
||||||
levels,
|
levels,
|
||||||
duration: data.settings.captcha.default_difficulty_strategy.duration,
|
duration: data.settings.captcha.default_difficulty_strategy.duration,
|
||||||
description: payload.pattern.description,
|
description: payload.pattern.description,
|
||||||
key: payload.key,
|
key: payload.key,
|
||||||
|
publish_benchmarks: payload.pattern.publish_benchmarks,
|
||||||
};
|
};
|
||||||
|
|
||||||
update_captcha_runner(&msg, &data, &username).await?;
|
update_captcha_runner(&msg, &data, &username).await?;
|
||||||
|
|||||||
@ -76,6 +76,7 @@ pub struct UpdateCaptcha {
|
|||||||
pub duration: u32,
|
pub duration: u32,
|
||||||
pub description: String,
|
pub description: String,
|
||||||
pub key: String,
|
pub key: String,
|
||||||
|
pub publish_benchmarks: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[my_codegen::post(
|
#[my_codegen::post(
|
||||||
@ -139,6 +140,16 @@ pub mod runner {
|
|||||||
e
|
e
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if payload.publish_benchmarks {
|
||||||
|
data.db
|
||||||
|
.analytics_create_psuedo_id_if_not_exists(&payload.key)
|
||||||
|
.await?;
|
||||||
|
} else {
|
||||||
|
data.db
|
||||||
|
.analytics_delete_all_records_for_campaign(&payload.key)
|
||||||
|
.await?;
|
||||||
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,15 +35,22 @@ struct AdvanceEditPage {
|
|||||||
name: String,
|
name: String,
|
||||||
key: String,
|
key: String,
|
||||||
levels: Vec<Level>,
|
levels: Vec<Level>,
|
||||||
|
publish_benchmarks: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AdvanceEditPage {
|
impl AdvanceEditPage {
|
||||||
fn new(config: Captcha, levels: Vec<Level>, key: String) -> Self {
|
fn new(
|
||||||
|
config: Captcha,
|
||||||
|
levels: Vec<Level>,
|
||||||
|
key: String,
|
||||||
|
publish_benchmarks: bool,
|
||||||
|
) -> Self {
|
||||||
AdvanceEditPage {
|
AdvanceEditPage {
|
||||||
duration: config.duration as u32,
|
duration: config.duration as u32,
|
||||||
name: config.description,
|
name: config.description,
|
||||||
levels,
|
levels,
|
||||||
key,
|
key,
|
||||||
|
publish_benchmarks,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -63,8 +70,9 @@ pub async fn advance(
|
|||||||
|
|
||||||
let config = data.db.get_captcha_config(&username, &key).await?;
|
let config = data.db.get_captcha_config(&username, &key).await?;
|
||||||
let levels = data.db.get_captcha_levels(Some(&username), &key).await?;
|
let levels = data.db.get_captcha_levels(Some(&username), &key).await?;
|
||||||
|
let publish_benchmarks = data.db.analytics_captcha_is_published(&key).await?;
|
||||||
|
|
||||||
let body = AdvanceEditPage::new(config, levels, key)
|
let body = AdvanceEditPage::new(config, levels, key, publish_benchmarks)
|
||||||
.render_once()
|
.render_once()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
Ok(HttpResponse::Ok()
|
Ok(HttpResponse::Ok()
|
||||||
@ -107,12 +115,7 @@ pub async fn easy(
|
|||||||
Ok(c) => {
|
Ok(c) => {
|
||||||
let config = data.db.get_captcha_config(&username, &key).await?;
|
let config = data.db.get_captcha_config(&username, &key).await?;
|
||||||
let publish_benchmarks =
|
let publish_benchmarks =
|
||||||
match data.db.analytics_get_psuedo_id_from_capmaign_id(&key).await {
|
data.db.analytics_captcha_is_published(&key).await?;
|
||||||
Ok(_) => Ok(true),
|
|
||||||
Err(db_core::errors::DBError::CaptchaNotFound) => Ok(false),
|
|
||||||
Err(e) => Err(e),
|
|
||||||
}?;
|
|
||||||
println!("publish_benchmarks psot edit: {publish_benchmarks}");
|
|
||||||
let pattern = TrafficPatternRequest {
|
let pattern = TrafficPatternRequest {
|
||||||
peak_sustainable_traffic: c.peak_sustainable_traffic as u32,
|
peak_sustainable_traffic: c.peak_sustainable_traffic as u32,
|
||||||
avg_traffic: c.avg_traffic as u32,
|
avg_traffic: c.avg_traffic as u32,
|
||||||
|
|||||||
@ -16,6 +16,22 @@
|
|||||||
<. } .>
|
<. } .>
|
||||||
<. let level = levels.len() + 1; .>
|
<. let level = levels.len() + 1; .>
|
||||||
<. include!("../add/advance/add-level.html"); .>
|
<. include!("../add/advance/add-level.html"); .>
|
||||||
|
|
||||||
|
<label class="sitekey-form__label" for="publish_benchmarks">
|
||||||
|
Anonymously publish CAPTCHA performance statistics to help other webmasters
|
||||||
|
<input
|
||||||
|
class="sitekey-form__input"
|
||||||
|
type="checkbox"
|
||||||
|
id="publish_benchmarks"
|
||||||
|
name="publish_benchmarks"
|
||||||
|
<. if publish_benchmarks { .>
|
||||||
|
checked
|
||||||
|
<. }.>
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button data-sitekey="<.= key .>"
|
<button data-sitekey="<.= key .>"
|
||||||
id="sitekey-form__submit" class="sitekey-form__submit" type="submit">
|
id="sitekey-form__submit" class="sitekey-form__submit" type="submit">
|
||||||
Submit
|
Submit
|
||||||
|
|||||||
@ -47,11 +47,19 @@ const submit = async (e: Event) => {
|
|||||||
|
|
||||||
const key = BTN.get().dataset.sitekey;
|
const key = BTN.get().dataset.sitekey;
|
||||||
|
|
||||||
|
|
||||||
|
const PUBLISH_BENCHMARKS = <HTMLInputElement>(
|
||||||
|
Add.FORM.querySelector("#publish_benchmarks")
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const payload = {
|
const payload = {
|
||||||
levels,
|
levels,
|
||||||
duration,
|
duration,
|
||||||
description,
|
description,
|
||||||
key,
|
key,
|
||||||
|
publish_benchmarks: PUBLISH_BENCHMARKS.checked,
|
||||||
};
|
};
|
||||||
|
|
||||||
console.debug(`[form submition] json payload: ${JSON.stringify(payload)}`);
|
console.debug(`[form submition] json payload: ${JSON.stringify(payload)}`);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user