mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2025-03-14 13:08:27 +03:00
feat: advance sitekey edit now allows modifying publication status
This commit is contained in:
parent
6834e555d8
commit
22edb04ce2
5 changed files with 48 additions and 23 deletions
|
@ -130,6 +130,7 @@ async fn create(
|
|||
levels,
|
||||
duration: data.settings.captcha.default_difficulty_strategy.duration,
|
||||
description: payload.description,
|
||||
publish_benchmarks: payload.publish_benchmarks,
|
||||
};
|
||||
|
||||
let mcaptcha_config = create_runner(&msg, &data, &username).await?;
|
||||
|
@ -137,11 +138,6 @@ async fn create(
|
|||
.add_traffic_pattern(&username, &mcaptcha_config.key, &pattern)
|
||||
.await?;
|
||||
|
||||
if payload.publish_benchmarks {
|
||||
data.db
|
||||
.analytics_create_psuedo_id_if_not_exists(&mcaptcha_config.key)
|
||||
.await?;
|
||||
}
|
||||
Ok(HttpResponse::Ok().json(mcaptcha_config))
|
||||
}
|
||||
|
||||
|
@ -166,21 +162,12 @@ async fn update(
|
|||
let levels =
|
||||
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 {
|
||||
levels,
|
||||
duration: data.settings.captcha.default_difficulty_strategy.duration,
|
||||
description: payload.pattern.description,
|
||||
key: payload.key,
|
||||
publish_benchmarks: payload.pattern.publish_benchmarks,
|
||||
};
|
||||
|
||||
update_captcha_runner(&msg, &data, &username).await?;
|
||||
|
|
|
@ -76,6 +76,7 @@ pub struct UpdateCaptcha {
|
|||
pub duration: u32,
|
||||
pub description: String,
|
||||
pub key: String,
|
||||
pub publish_benchmarks: bool,
|
||||
}
|
||||
|
||||
#[my_codegen::post(
|
||||
|
@ -139,6 +140,16 @@ pub mod runner {
|
|||
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(())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,15 +35,22 @@ struct AdvanceEditPage {
|
|||
name: String,
|
||||
key: String,
|
||||
levels: Vec<Level>,
|
||||
publish_benchmarks: bool,
|
||||
}
|
||||
|
||||
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 {
|
||||
duration: config.duration as u32,
|
||||
name: config.description,
|
||||
levels,
|
||||
key,
|
||||
publish_benchmarks,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -63,8 +70,9 @@ pub async fn advance(
|
|||
|
||||
let config = data.db.get_captcha_config(&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()
|
||||
.unwrap();
|
||||
Ok(HttpResponse::Ok()
|
||||
|
@ -107,12 +115,7 @@ pub async fn easy(
|
|||
Ok(c) => {
|
||||
let config = data.db.get_captcha_config(&username, &key).await?;
|
||||
let publish_benchmarks =
|
||||
match data.db.analytics_get_psuedo_id_from_capmaign_id(&key).await {
|
||||
Ok(_) => Ok(true),
|
||||
Err(db_core::errors::DBError::CaptchaNotFound) => Ok(false),
|
||||
Err(e) => Err(e),
|
||||
}?;
|
||||
println!("publish_benchmarks psot edit: {publish_benchmarks}");
|
||||
data.db.analytics_captcha_is_published(&key).await?;
|
||||
let pattern = TrafficPatternRequest {
|
||||
peak_sustainable_traffic: c.peak_sustainable_traffic as u32,
|
||||
avg_traffic: c.avg_traffic as u32,
|
||||
|
|
|
@ -16,6 +16,22 @@
|
|||
<. } .>
|
||||
<. let level = levels.len() + 1; .>
|
||||
<. 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 .>"
|
||||
id="sitekey-form__submit" class="sitekey-form__submit" type="submit">
|
||||
Submit
|
||||
|
|
|
@ -47,11 +47,19 @@ const submit = async (e: Event) => {
|
|||
|
||||
const key = BTN.get().dataset.sitekey;
|
||||
|
||||
|
||||
const PUBLISH_BENCHMARKS = <HTMLInputElement>(
|
||||
Add.FORM.querySelector("#publish_benchmarks")
|
||||
);
|
||||
|
||||
|
||||
|
||||
const payload = {
|
||||
levels,
|
||||
duration,
|
||||
description,
|
||||
key,
|
||||
publish_benchmarks: PUBLISH_BENCHMARKS.checked,
|
||||
};
|
||||
|
||||
console.debug(`[form submition] json payload: ${JSON.stringify(payload)}`);
|
||||
|
|
Loading…
Add table
Reference in a new issue