admin pages

Pages can now be locked behind admin privileges
This commit is contained in:
2026-05-01 16:47:42 +02:00
parent 802e5876f7
commit fdd2e2a757
5 changed files with 94 additions and 36 deletions

View File

@@ -4,6 +4,7 @@ use gloo_net::http::Request;
use serde::{Deserialize, Serialize};
use wasm_bindgen_futures::spawn_local;
use yew::prelude::*;
use yew_router::prelude::use_navigator;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct User {
@@ -177,6 +178,7 @@ pub fn login_component() -> Html {
let loading = use_state(|| false);
let error = use_state(|| String::new());
let success = use_state(|| false);
let navigator = use_navigator().unwrap();
let onsubmit = {
let username = username.clone();
@@ -184,6 +186,7 @@ pub fn login_component() -> Html {
let loading = loading.clone();
let error = error.clone();
let success = success.clone();
let navigator = navigator.clone();
Callback::from(move |e: SubmitEvent| {
e.prevent_default();
@@ -192,6 +195,7 @@ pub fn login_component() -> Html {
let loading = loading.clone();
let error = error.clone();
let success = success.clone();
let navigator = navigator.clone();
loading.set(true);
error.set(String::new());
@@ -211,7 +215,10 @@ pub fn login_component() -> Html {
loading.set(false);
match response {
Ok(r) if r.status() == 200 => success.set(true),
Ok(r) if r.status() == 200 => {
success.set(true);
navigator.push(&crate::Route::Home);
}
Ok(r) => {
let text = r.text().await.unwrap_or_else(|_| "unknown".into());
error.set(format!("HTTP {}: {}", r.status(), text));
@@ -242,7 +249,6 @@ pub fn login_component() -> Html {
})}
/>
<button type="submit" disabled={*loading}>{ if *loading { "Logging in..." } else { "Login" } }</button>
if *success { <p>{"Logged in — cookie set by server"}</p> }
if !error.is_empty() { <p style="color:red">{(*error).clone()}</p> }
</form>
}