✨ (auth): Añade CurrentUser y sistema de permisos
- Nuevo módulo `auth` que exporta `CurrentUser`, `CheckPermission` y `has_permission()`. - `Context` y `Page` exponen `current_user()` vía `Contextual`. - `HttpRequest` accede a extensiones de middleware con `extension<T>()`. - `Extension` incluye nuevo método `configure_middleware`. - `try_dispatch_actions` para despachar acciones con control del flujo.
This commit is contained in:
parent
3120fd9a6f
commit
0e96bcce64
22 changed files with 544 additions and 84 deletions
|
|
@ -16,6 +16,7 @@
|
|||
mod error;
|
||||
pub use error::ErrorPage;
|
||||
|
||||
use crate::auth::CurrentUser;
|
||||
use crate::base::action;
|
||||
use crate::core::component::{AssetsOp, ChildOp, Context, ContextError, Contextual};
|
||||
use crate::core::theme::{DefaultRegion, Region, RegionRef, TemplateRef, ThemeRef};
|
||||
|
|
@ -95,8 +96,10 @@ pub struct Page {
|
|||
impl Page {
|
||||
/// Crea una nueva instancia de página.
|
||||
///
|
||||
/// La petición HTTP se guardará en el contexto de renderizado de la página para poder ser
|
||||
/// recuperada por los componentes si es necesario.
|
||||
/// La petición HTTP se guarda en el contexto de renderizado, que extrae automáticamente el
|
||||
/// [`CurrentUser`] inyectado por *middleware* en sus extensiones (ver
|
||||
/// [`Context::new`](crate::core::component::Context::new)). Cualquier *handler* tiene acceso al
|
||||
/// usuario actual desde el momento en que se crea la página, sin llamadas adicionales.
|
||||
#[rustfmt::skip]
|
||||
pub fn new(request: HttpRequest) -> Self {
|
||||
Page {
|
||||
|
|
@ -316,6 +319,10 @@ impl Contextual for Page {
|
|||
self.context.request()
|
||||
}
|
||||
|
||||
fn current_user(&self) -> &CurrentUser {
|
||||
self.context.current_user()
|
||||
}
|
||||
|
||||
fn theme(&self) -> ThemeRef {
|
||||
self.context.theme()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue