Logout button

And styling for it
This commit is contained in:
2026-05-04 16:45:52 +02:00
parent 331552b656
commit 7bde1470a1
3 changed files with 55 additions and 3 deletions

View File

@@ -215,6 +215,7 @@ pub fn users_menu() -> Html {
#[component(Sidebar)]
pub fn sidebar() -> Html {
let is_admin = use_state(|| None::<bool>);
let navigator = use_navigator().expect("Sidebar must be used within a Router");
{
let is_admin = is_admin.clone();
@@ -238,6 +239,20 @@ pub fn sidebar() -> Html {
});
}
let on_logout = {
let navigator = navigator.clone();
Callback::from(move |_| {
let navigator = navigator.clone();
spawn_local(async move {
let _ = Request::get("/api/logout")
.credentials(web_sys::RequestCredentials::Include)
.send()
.await;
navigator.push(&crate::Route::Login);
});
})
};
match *is_admin {
None => html! { <div class="sidebar-loading">{ "Loading..." }</div> },
@@ -247,6 +262,14 @@ pub fn sidebar() -> Html {
<nav class="sidebar user">
<ul>
<TicketMenu/>
<li class="logout-item">
<button
class="logout-button"
onclick={on_logout.clone()}
>
{ "Logout" }
</button>
</li>
</ul>
</nav>
</SidebarStateProvider>
@@ -260,6 +283,14 @@ pub fn sidebar() -> Html {
<TicketMenu/>
<UsersMenu/>
<Link<crate::Route> to={crate::Route::Diagnostics}>{ "Statistiken" }</Link<crate::Route>>
<li class="logout-item">
<button
class="logout-button"
onclick={on_logout.clone()}
>
{ "Logout" }
</button>
</li>
</ul>
</nav>
</SidebarStateProvider>