pub struct ProtectedRoute {
_marker: PhantomData<()>,
function_component: FunctionComponent<Self>,
}Expand description
A component that protects routes by enforcing authentication and optional administrator privileges.
This component uses the backend’s validation middleware by fetching the current user’s authentication
and admin status from the /api/users/current endpoint (which requires a valid JWT token).
Based on the AuthState and the admin_page property, it either renders its children or redirects the user.
§Behavior
- Initial Load: Displays “Loading…” while checking authentication status via the backend.
- Not Authenticated: Redirects to the login page (
crate::Route::Login). - Authenticated (valid JWT token from backend):
- If
admin_pageistrue:- If the user is an administrator (
is_admin: Some(true)), it renderschildren. - If the user is not an administrator (
is_admin: Some(false)), it redirects to the permission denied page (crate::Route::PermissionDenied). - If admin status is still being checked (
is_admin: None), it displays “Checking permissions…”.
- If the user is an administrator (
- If
admin_pageisfalse: It renderschildrendirectly, as only authentication is required.
- If
§Example Usage
ⓘ
html! {
<ProtectedRoute admin_page={true}>
<AdminDashboard />
</ProtectedRoute>
}Fields§
§_marker: PhantomData<()>§function_component: FunctionComponent<Self>Trait Implementations§
Source§impl BaseComponent for ProtectedRoutewhere
Self: 'static,
impl BaseComponent for ProtectedRoutewhere
Self: 'static,
Source§type Properties = ProtectedRouteProps
type Properties = ProtectedRouteProps
The Component’s Properties.
Source§fn update(&mut self, _ctx: &Context<Self>, _msg: Self::Message) -> bool
fn update(&mut self, _ctx: &Context<Self>, _msg: Self::Message) -> bool
Updates component’s internal state.
Source§fn changed(
&mut self,
_ctx: &Context<Self>,
_old_props: &Self::Properties,
) -> bool
fn changed( &mut self, _ctx: &Context<Self>, _old_props: &Self::Properties, ) -> bool
React to changes of component properties.
Source§fn rendered(&mut self, _ctx: &Context<Self>, _first_render: bool)
fn rendered(&mut self, _ctx: &Context<Self>, _first_render: bool)
Notified after a layout is rendered.
Source§fn prepare_state(&self) -> Option<String>
fn prepare_state(&self) -> Option<String>
Prepares the server-side state.
Source§impl Debug for ProtectedRoute
impl Debug for ProtectedRoute
Source§impl FunctionProvider for ProtectedRoute
impl FunctionProvider for ProtectedRoute
Source§type Properties = ProtectedRouteProps
type Properties = ProtectedRouteProps
Properties for the Function Component.
Auto Trait Implementations§
impl !Freeze for ProtectedRoute
impl !RefUnwindSafe for ProtectedRoute
impl !Send for ProtectedRoute
impl !Sync for ProtectedRoute
impl Unpin for ProtectedRoute
impl !UnwindSafe for ProtectedRoute
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoPropValue<Option<T>> for T
impl<T> IntoPropValue<Option<T>> for T
§fn into_prop_value(self) -> Option<T>
fn into_prop_value(self) -> Option<T>
Convert
self to a value of a Properties struct.§impl<T> IntoPropValue<T> for T
impl<T> IntoPropValue<T> for T
§fn into_prop_value(self) -> T
fn into_prop_value(self) -> T
Convert
self to a value of a Properties struct.