Home page changes depending on role
This commit is contained in:
@@ -1,21 +1,37 @@
|
||||
use gloo_net::http::Request;
|
||||
use wasm_bindgen_futures::spawn_local;
|
||||
use yew::prelude::*;
|
||||
|
||||
#[component(Home)]
|
||||
pub fn home_component() -> Html {
|
||||
let counter = use_state(|| 0);
|
||||
let onclick = {
|
||||
let counter = counter.clone();
|
||||
move |_| {
|
||||
let value = *counter + 1;
|
||||
counter.set(value);
|
||||
}
|
||||
};
|
||||
let is_admin = use_state(|| None::<bool>);
|
||||
|
||||
html! {
|
||||
<div>
|
||||
<button {onclick}>{ "+1" }</button>
|
||||
<p>{ *counter }</p>
|
||||
</div>
|
||||
{
|
||||
let is_admin = is_admin.clone();
|
||||
use_effect_with((), move |_| {
|
||||
spawn_local(async move {
|
||||
let response = Request::get("/api/users/current")
|
||||
.credentials(web_sys::RequestCredentials::Include)
|
||||
.send()
|
||||
.await;
|
||||
|
||||
match response {
|
||||
Ok(resp) if resp.status() == 200 => {
|
||||
let user_data: serde_json::Value = resp.json().await.unwrap_or_default();
|
||||
let admin_value = user_data["data"]["is_admin"].as_bool();
|
||||
is_admin.set(admin_value);
|
||||
}
|
||||
_ => is_admin.set(Some(false)),
|
||||
}
|
||||
});
|
||||
|| ()
|
||||
});
|
||||
}
|
||||
|
||||
match *is_admin {
|
||||
None => html! { <div>{ "Loading..." }</div> },
|
||||
Some(true) => html! { <div>{ "You are admin" }</div> },
|
||||
Some(false) => html! { <div>{ "You are a normal user" }</div> },
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user