🎨 Ajustes menores de separadores de sección

This commit is contained in:
Manuel Cillero 2026-10-02 22:59:26 +02:00
parent 04502ef81e
commit c06efbd0d1
12 changed files with 32 additions and 31 deletions

View file

@ -22,15 +22,16 @@ use pagetop::prelude::*;
use crate::LOCALES_USER;
// **< constantes compartidas >**********************************************************************
// **< constantes compartidas >*********************************************************************
/// Identificador del `<form>` de [`UserForm`] en modo [`UserFormMode::Edit`]. En ese modo, el botón
/// "Guardar" no se renderiza dentro del formulario (ver `UserForm::prepare()`): lo añade la pantalla
/// de edición (`handlers::admin::users::edit_actions()`) junto al resto de acciones, referenciando
/// este id mediante el atributo `form` para seguir enviando el formulario aunque esté fuera de él.
/// "Guardar" no se renderiza dentro del formulario (ver `UserForm::prepare()`). Lo añade la
/// pantalla de edición (`handlers::admin::users::edit_actions()`) junto al resto de acciones,
/// referenciando este `id` mediante el atributo `form` para seguir enviando el formulario aunque
/// esté fuera de él.
pub(crate) const USER_ADMIN_FORM_ID: &str = "user-admin-form";
// **< tipos compartidos >***************************************************************************
// **< tipos compartidos >**************************************************************************
/// Un permiso dentro de un grupo del catálogo: `(clave, etiqueta, concedido)`.
pub(crate) type PermissionItem = (CowStr, Lc, bool);
@ -38,12 +39,12 @@ pub(crate) type PermissionItem = (CowStr, Lc, bool);
/// Catálogo de permisos agrupado: `(título del grupo, permisos del grupo)`.
pub(crate) type PermissionGroups = Vec<(Lc, Vec<PermissionItem>)>;
// **< helpers compartidos >*************************************************************************
// **< HELPERS >************************************************************************************
// `Fieldset` con las casillas para asignar roles (usado en el alta de usuario y en la pantalla
// dedicada de asignación de roles). El rol "authenticated" no se lista como casilla ni se envía:
// todo usuario autenticado lo tiene concedido por definición (ver `session::load_user_from_session`),
// sin necesidad de una fila en `user_role`.
// `Fieldset` con las casillas para asignar roles (usado en el alta de usuario y en la pantalla de
// asignación de roles). El rol "authenticated" no se lista como casilla ni se envía: todo usuario
// autenticado lo tiene concedido por definición (ver `session::load_user_from_session`), sin
// necesidad de una fila en `user_role`.
pub(crate) fn roles_fieldset(roles: &[(i32, String, bool)]) -> form::Fieldset {
let mut field = form::check::Field::new().with_name("role_ids");
for (role_id, label, checked) in roles {

View file

@ -50,7 +50,7 @@ impl Component for PasswordConfirm {
#[builder_impl]
impl PasswordConfirm {
// **< PasswordConfirm BUILDER >********************************************************************
// **< PasswordConfirm BUILDER >****************************************************************
/// Establece la etiqueta del campo de contraseña (por defecto, "field-password").
pub(crate) fn with_password_label(mut self, label: Lc) -> Self {

View file

@ -257,7 +257,7 @@ pub(crate) async fn new_post(
}
}
// **< edit_get / edit_post >************************************************************************
// **< edit_get / edit_post >***********************************************************************
async fn render_user_edit(
request: HttpRequest,
@ -611,7 +611,7 @@ async fn user_view_roles(roles: &[role::Model], cx: &mut Context) -> Block {
}))
}
// **< roles_get / roles_post >**********************************************************************
// **< roles_get / roles_post >*********************************************************************
/// GET /admin/user/users/{id}/roles - Formulario de asignación de roles de un usuario.
pub(crate) async fn roles_get(
@ -801,7 +801,7 @@ pub(crate) async fn admin_post(
}
}
// **< password_get / password_post >****************************************************************
// **< password_get / password_post >***************************************************************
/// GET /admin/user/users/{id}/password - Formulario de restablecimiento de contraseña por un
/// administrador.

View file

@ -178,7 +178,7 @@ fn declare_admin_pages(bag: &mut PageBag) {
});
}
// **< Roles de sistema (fijos) >********************************************************************
// **< Roles de sistema (fijos) >*******************************************************************
// Sembrados con id fijo en `migration/m20260629_000002_create_roles.rs` y bloqueados (`locked`);
// no se borran ni cambian de id.

View file

@ -12,7 +12,7 @@ use crate::entity::{role, role_permission, user_role};
use crate::error::AuthError;
use crate::permission;
// **< listado >**************************************************************************************
// **< listado >************************************************************************************
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub(crate) enum RoleSortField {
@ -129,7 +129,7 @@ async fn role_items(roles: Vec<role::Model>) -> Result<Vec<RoleListItem>, AuthEr
.collect())
}
// **< find_role / role_permission_keys >***************************************************************
// **< find_role / role_permission_keys >***********************************************************
pub(crate) async fn find_role(role_id: i32) -> Result<role::Model, AuthError> {
role::Entity::find_by_id(role_id)
@ -146,7 +146,7 @@ pub(crate) async fn role_permission_keys(role_id: i32) -> Result<Vec<String>, Au
Ok(rows.into_iter().map(|r| r.permission_key).collect())
}
// **< create_role >*********************************************************************************
// **< create_role >********************************************************************************
pub(crate) struct NewRoleData<'a> {
pub machine_name: &'a str,
@ -193,7 +193,7 @@ pub(crate) async fn create_role(data: NewRoleData<'_>) -> Result<i32, AuthError>
Ok(result.last_insert_id)
}
// **< update_role >*********************************************************************************
// **< update_role >********************************************************************************
pub(crate) struct RoleUpdateData<'a> {
pub label: &'a str,
@ -221,7 +221,7 @@ pub(crate) async fn update_role(role_id: i32, data: RoleUpdateData<'_>) -> Resul
Ok(())
}
// **< delete_role >*********************************************************************************
// **< delete_role >********************************************************************************
pub(crate) async fn delete_role(role_id: i32) -> Result<(), AuthError> {
let role = find_role(role_id).await?;
@ -241,7 +241,7 @@ pub(crate) async fn delete_role(role_id: i32) -> Result<(), AuthError> {
Ok(())
}
// **< set_role_permissions >************************************************************************
// **< set_role_permissions >***********************************************************************
/// Reemplaza por completo el conjunto de permisos concedidos a un rol. Permitido aunque el rol
/// esté bloqueado (`locked`): los roles de sistema también necesitan permisos gestionables.