admin pages
Pages can now be locked behind admin privileges
This commit is contained in:
@@ -28,3 +28,13 @@ pub fn not_found_component() -> Html {
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
#[component(PermissionDenied)]
|
||||
pub fn denied_component() -> Html {
|
||||
html! {
|
||||
<div>
|
||||
<h1>{ "Sie haben nicht die benötigten Rechte um diese Seite aufzurufen" }</h1>
|
||||
<h3>{ "Wenn sie denken, dass dies ein Fehler ist kontaktieren sie Herrn Winter" }</h3>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user