added simple route to home after signup and login

modified:   src/pages/login.rs
	modified:   src/pages/signup.rs
This commit is contained in:
Danny Zou 2024-02-26 10:30:54 -05:00
parent 2b76340608
commit 7236e09b4b
2 changed files with 22 additions and 7 deletions

View File

@ -1,9 +1,10 @@
use crate::auth::login; use crate::auth::login;
use leptos::leptos_dom::*; use leptos::leptos_dom::*;
use leptos::*; use leptos::*;
use leptos_icons::IoIcon::*;
use leptos_icons::AiIcon::*; use leptos_icons::AiIcon::*;
use leptos_icons::IoIcon::*;
use leptos_icons::*; use leptos_icons::*;
use leptos_router::*;
#[component] #[component]
pub fn Login() -> impl IntoView { pub fn Login() -> impl IntoView {
@ -17,12 +18,16 @@ pub fn Login() -> impl IntoView {
log!("showing password"); log!("showing password");
}; };
let navigate = leptos_router::use_navigate();
let on_submit = move |ev: leptos::ev::SubmitEvent| { let on_submit = move |ev: leptos::ev::SubmitEvent| {
ev.prevent_default(); ev.prevent_default();
let username_or_email1 = username_or_email.get(); let username_or_email1 = username_or_email.get();
let password1 = password.get(); let password1 = password.get();
let mut success: bool = false;
spawn_local(async move { spawn_local(async move {
let login_result = login(username_or_email1, password1).await; let login_result = login(username_or_email1, password1).await;
if let Err(err) = login_result { if let Err(err) = login_result {
@ -31,10 +36,15 @@ pub fn Login() -> impl IntoView {
} else if let Ok(true) = login_result { } else if let Ok(true) = login_result {
// Redirect to the login page // Redirect to the login page
log!("Logged in Successfully!"); log!("Logged in Successfully!");
success = true;
} else if let Ok(false) = login_result { } else if let Ok(false) = login_result {
log!("Invalid username or password"); log!("Invalid username or password");
} }
}); });
if success {
navigate("/", Default::default());
log!("navigated to home after login");
}
}; };
view! { view! {

View File

@ -15,6 +15,8 @@ pub fn Signup() -> impl IntoView {
let (show_password, set_show_password) = create_signal(false); let (show_password, set_show_password) = create_signal(false);
let navigate = leptos_router::use_navigate();
let toggle_password = move |_| { let toggle_password = move |_| {
set_show_password.update(|show_password| *show_password = !*show_password); set_show_password.update(|show_password| *show_password = !*show_password);
log!("showing password"); log!("showing password");
@ -29,6 +31,9 @@ pub fn Signup() -> impl IntoView {
password: Some(password.get()), password: Some(password.get()),
created_at: None, created_at: None,
}; };
let mut success: bool = false;
log!("new user: {:?}", new_user); log!("new user: {:?}", new_user);
spawn_local(async move { spawn_local(async move {
if let Err(err) = signup(new_user).await { if let Err(err) = signup(new_user).await {
@ -37,8 +42,13 @@ pub fn Signup() -> impl IntoView {
} else { } else {
// Redirect to the login page // Redirect to the login page
log!("Signed up successfully!"); log!("Signed up successfully!");
success = true;
} }
}); });
if success {
navigate("/", Default::default());
log!("navigated to home after signup");
}
}; };
view! { view! {
@ -81,18 +91,13 @@ pub fn Signup() -> impl IntoView {
<i></i> <i></i>
<Show <Show
when=move || {show_password() == false} when=move || {show_password() == false}
fallback=move || view!{ <button on:click=toggle_password class="password-visibility"> fallback=move || view!{ <button on:click=toggle_password class="password-visibility"> <Icon icon=Icon::from(AiEyeInvisibleFilled) /></button> /> }
<Icon icon=Icon::from(AiEyeInvisibleFilled) />
</button> /> }
> >
<button on:click=toggle_password class="password-visibility"> <button on:click=toggle_password class="password-visibility">
<Icon icon=Icon::from(AiEyeFilled) /> <Icon icon=Icon::from(AiEyeFilled) />
</button> </button>
</Show> </Show>
</div> </div>
<input type="submit" value="Sign Up" /> <input type="submit" value="Sign Up" />
<span class="go-to-login"> <span class="go-to-login">
Already Have an Account? <a href="/login">Go to Login</a> Already Have an Account? <a href="/login">Go to Login</a>