Add 'Remember Me' feature to login (extends session to 30 days)
All checks were successful
Build MIPS Binary / build (push) Successful in 4m7s

This commit is contained in:
spinline
2026-02-07 19:05:52 +03:00
parent 9b18b97c49
commit 575cfa4b38
2 changed files with 28 additions and 4 deletions

View File

@@ -6,12 +6,14 @@ use serde::Serialize;
struct LoginRequest {
username: String,
password: String,
remember_me: bool,
}
#[component]
pub fn Login() -> impl IntoView {
let (username, set_username) = create_signal(String::new());
let (password, set_password) = create_signal(String::new());
let (remember_me, set_remember_me) = create_signal(false);
let (error, set_error) = create_signal(Option::<String>::None);
let (loading, set_loading) = create_signal(false);
@@ -26,6 +28,7 @@ pub fn Login() -> impl IntoView {
let req = LoginRequest {
username: username.get(),
password: password.get(),
remember_me: remember_me.get(),
};
let client = gloo_net::http::Request::post("/api/auth/login")
@@ -89,6 +92,19 @@ pub fn Login() -> impl IntoView {
/>
</div>
<div class="form-control mt-4">
<label class="label cursor-pointer justify-start gap-3">
<input
type="checkbox"
class="checkbox checkbox-primary checkbox-sm"
prop:checked=remember_me
on:change=move |ev| set_remember_me.set(event_target_checked(&ev))
disabled=move || loading.get()
/>
<span class="label-text">"Beni Hatırla"</span>
</label>
</div>
<Show when=move || error.get().is_some()>
<div class="alert alert-error mt-4 text-sm py-2">
<svg xmlns="http://www.w3.org/2000/svg" class="stroke-current shrink-0 h-6 w-6" fill="none" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z" /></svg>