Added captcha to booking form. Deleted useless files.

This commit is contained in:
2024-02-13 10:37:55 +01:00
parent 1b1b566267
commit ab3e85573d
75 changed files with 309 additions and 5800 deletions
+24 -9
View File
@@ -1,9 +1,11 @@
use chrono::{Duration, Local, NaiveDate, NaiveTime, Timelike};
use leptos::*;
use leptos_captcha::{Captcha, pow_dispatch};
use leptos_router::*;
use rust_decimal::Decimal;
use crate::backend::data::{ApiResponse, DayHour, Reservation, ResProperty, SlotType, TmCheck};
use crate::backend::reservation::{CreateReservation, get_public_form_data, is_reserved};
use crate::backend::user::get_pow;
use crate::components::data_form::ForValidation;
use crate::components::modal_box::DialogOpener;
use crate::locales::trl;
@@ -97,6 +99,7 @@ pub fn Public() -> impl IntoView {
let invalid_dlg = DialogOpener::new();
let result_dlg = DialogOpener::new();
let result = cr_reservation.value();
let is_pending = create_rw_signal(None);
create_effect(move |_| {
day.set(Local::now().date_naive());
@@ -104,18 +107,29 @@ pub fn Public() -> impl IntoView {
view! {
<ResError opener=invalid_dlg validator=validator/>
<ResSaved opener=result_dlg save_result=result day=day price=price.write_only() slots=slots.write_only()/>
<ResSaved opener=result_dlg
save_result=result
day=day
price=price.write_only()
slots=slots.write_only()
captcha_state=is_pending.read_only()/>
<div class="card-body">
<ActionForm
on:submit=move |ev| {
let act = CreateReservation::from_event(&ev);
if !act.is_err() {
validator.check(act.unwrap().entity(), &ev);
}
if !validator.is_valid() {
invalid_dlg.show();
} else {
result_dlg.show();
cr_reservation.set_pending(true);
if let Ok(mut act) = CreateReservation::from_event(&ev) {
validator.check(act.entity(), &ev);
if !validator.is_valid() {
invalid_dlg.show();
} else {
ev.prevent_default();
pow_dispatch(get_pow, is_pending, move |pow| {
act.pow = pow.unwrap();
cr_reservation.dispatch(act);
});
result_dlg.show();
}
}
}
action=cr_reservation>
@@ -246,6 +260,7 @@ pub fn Public() -> impl IntoView {
/>
</div>
</div>
<Captcha is_pending />
<div class="modal-footer">
<button type="submit" class="btn btn-primary">
{trl("Book")}