✨ (user): Añade el menú de cuenta AccountMenu

This commit is contained in:
Manuel Cillero 2026-09-26 16:57:57 +02:00
parent 165cb49880
commit 9e2fc2ccfa
10 changed files with 207 additions and 96 deletions

View file

@ -100,8 +100,9 @@ use pagetop_seaorm::install_migrations;
include_locales!(LOCALES_ADMIN);
/// Ruta raíz del panel de administración. No es configurable: otras piezas del ecosistema (p. ej.
/// las rutas de `pagetop-user`, `/admin/user/...`) ya asumen este valor de forma literal.
pub(crate) const ADMIN_BASE_PATH: &str = "/admin";
/// las rutas de `pagetop-user`, `/admin/user/...`) ya asumen este valor de forma literal. Es
/// pública para que otras extensiones enlacen al panel sin repetir la ruta.
pub const ADMIN_BASE_PATH: &str = "/admin";
pub mod action;
pub mod component;

View file

@ -269,6 +269,22 @@ pub fn global() -> &'static AdminRegistry {
REGISTRY.get().expect("AdminRegistry not initialized")
}
/// Devuelve `true` si el usuario de la petición actual tiene acceso a alguna página del panel, es
/// decir, si `/admin` no le devolvería un acceso denegado.
///
/// Permite a otras extensiones (p. ej. el menú de cuenta de `pagetop-user`) ofrecer el enlace a
/// la administración sólo cuando procede.
pub fn can_access_admin(cx: &Context) -> bool {
let reg = global();
reg.ordered_sections().into_iter().any(|section| {
section.is_visible(cx)
&& reg
.pages_for_section(&section.key)
.into_iter()
.any(|page| page.is_accessible(cx))
})
}
// **< Menú de administración >*********************************************************************
/// Construye la barra de navegación de administración para el usuario de la petición actual: un
@ -308,7 +324,5 @@ pub fn admin_navbar(cx: &Context) -> Navbar {
nav = nav.with_item(nav::Item::dropdown(menu));
}
Navbar::simple()
.with_position(navbar::Position::StickyTop)
.with_item(navbar::Item::nav(nav))
Navbar::simple().with_item(navbar::Item::nav(nav))
}