Login Session/ Logout button

This commit is contained in:
2025-05-17 17:35:13 -04:00
parent d40c379216
commit 34c050384b
4 changed files with 20 additions and 7 deletions

View File

@@ -1,6 +1,6 @@
use dioxus::prelude::*;
use crate::Route;
use crate::{contexts::AuthContext, Route};
const NAV_CSS: Asset = asset!("/assets/style/nav.scss");
const NAV_ICON: Asset = asset!("/assets/favicon.ico");
@@ -47,7 +47,14 @@ pub fn Widgets() -> Element {
#[component]
pub fn Utils() -> Element {
let mut auth_context = use_context::<AuthContext>();
rsx! {
div { class: "utils" }
div { class: "utils",
div{
onclick: move |_| auth_context.logout(),
"Logout"
}
}
}
}

View File

@@ -1,4 +1,4 @@
use dioxus::{html::u::icon, prelude::*};
use dioxus::prelude::*;
use crate::components::icons;

View File

@@ -7,12 +7,18 @@ pub struct AuthContext {
}
impl AuthContext {
pub fn set_token(&mut self, token: String) {
pub fn login(&mut self, token: String) {
self.jwt.set(Some(token.clone()));
let local_storage = window().unwrap().local_storage().unwrap().unwrap();
_ = local_storage.set_item("token", token.as_str());
}
pub fn logout(&mut self) {
self.jwt.set(None);
let local_storage = window().unwrap().local_storage().unwrap().unwrap();
_ = local_storage.remove_item("token");
}
pub fn new() -> Self {
println!("new");
let local_storage = window().unwrap().local_storage().unwrap().unwrap();

View File

@@ -36,16 +36,16 @@ pub fn Login() -> Element {
Ok(res) => {
match res.into_inner().result.unwrap() {
crate::rpc::aoba::login_response::Result::Jwt(jwt) => {
auth_context.jwt.set(Some(jwt.token));
auth_context.login(jwt.token);
}
crate::rpc::aoba::login_response::Result::Error(login_error) => {
auth_context.jwt.set(None);
auth_context.logout();
error.set(Some(login_error.message));
}
};
}
Err(_err) => {
auth_context.jwt.set(None);
auth_context.logout();
}
}
});