Administrador de Configuración de Roles
PortalRoleAdmin es la página de administración para los roles del portal: qué roles tiene el portal y cuáles de ellos se asigna a un usuario recién registrado. Se distribuye con el framework en ambas pilas, así que un portal recoge mejoras actualizando sus paquetes — la página que escribes es la puerta de roles y el encabezado.
¿Qué hay en la página?
Dos cuadrículas, cada una con Nuevo, Abrir y Eliminar. Cada cambio se escribe tan pronto como lo guardas o eliminas — no hay guardado a nivel de página.
- Roles en el portal — un nombre y una descripción, editados en un panel lateral. Lo que concede un rol no está configurado aquí: está vinculado al nombre del rol en código al inicio, así que añadir un rol lo hace asignable en lugar de poderoso, y renombrarlo lo desvincula de lo que concede.
- Configuraciones de roles — qué rol se le asigna a un usuario recién registrado, y cuándo — a nadie, a todos o a quien coincida con una regla que escribas.
Reglas que deciden quién cumple los requisitos
Una regla es una consulta FetchXML sobre contact. Cuando alguien se registra, el portal reduce la consulta a ese contacto y asigna el rol si Dataverse lo devuelve. Se respetan las uniones a tablas relacionadas, y las columnas, ordenan y top no afectan la respuesta, por lo que una consulta copiada de una vista funciona tal cual.
En React la regla se escribe con el constructor de consultas FetchXML, fijado en Contact con los agregados desactivados, en una página propia para que el constructor tenga espacio. Run muestra los contactos que la regla coincide hoy — la única forma de saber si selecciona a las personas a las que te referías.
En Blazor la misma columna se edita como texto FetchXML; aún no existe un generador de consultas en Blazor.
Una regla rota falla silenciosamente
Una regla vacía, que no es válida en FetchXML, que es una consulta agregada o que está enraizada en una tabla distinta a Contact no coincide con nadie. Nada la informa como un error — el rol simplemente nunca se asigna. El editor de React advierte sobre cada uno de estos elementos por encima del constructor mientras escribes la regla.
Añadirlo a tu portal
Ambas plantillas de proyecto ya incluyen esta página en /RoleConfigurationAdmin, en el menú de Administración. Para añadirla tú mismo, abre una página con [AuthorizeSystemAdmin] y <SystemAdminView> — en React — useIsSystemAdmin() y suelta el componente en:
// La página de lista: roles y sus configuraciones.
<PortalRoleAdmin
configurationUrl={(id) => `/RoleConfigurationAdmin/Configuration/${id ?? 'new'}`}
onNavigate={(url) => navigate(url)}
/>@attribute [Route("admin/role-configuration")]
@attribute [AuthorizeSystemAdmin]
@using PowerPortalsPro.Web.Blazor.FluentUI.Components
<SystemAdminView>
<Authorized>
<PortalRoleAdmin />
</Authorized>
</SystemAdminView>La página de configuración (React)
configurationUrl abre una configuración en su propia página en lugar de en un panel lateral. Si la dejas apagada, se usa el panel, lo cual funciona pero deja poco espacio al creador de consultas. La página a la que apunta proporciona el contexto del registro y el botón de guardar; el propio formulario es el PortalRoleConfigurationForm:
// Montado en /RoleConfigurationAdmin/Configuration/:id — 'nuevo' crea uno.
const { id } = useParams();
const isCreateMode = id === 'new';
<RecordContext table="ppp_portalroleconfiguration" {...(isCreateMode ? {} : { id })}>
<SaveContextButton appearance="primary" />
<PortalRoleConfigurationForm />
</RecordContext>
Roles web bajo autorización mejorada
En un portal que ejecuta autorización mejorada, los usuarios reciben roles web de Power Pages en lugar de roles de portal: Power Pages otorga a cada usuario el rol de seguridad Dataverse que empareja con cada uno de sus roles web, y lo que ese rol permite proviene de los permisos de tabla del sitio. WebRoleAdmin es el equivalente de PortalRoleAdmin para ese modelo, con tres cuadrículas: los roles web del sitio, sus permisos de tabla — a qué tabla, qué filas, qué operaciones y a qué roles web se aplica cada uno — y las reglas que otorgan roles web a nuevos usuarios, escritas exactamente como antes. Las reglas están en la solución de Autorización Mejorada Power Portals Pro , que necesita que Power Pages esté instalado en el entorno.
Ambas plantillas de proyecto muestran la página que se aplica: el menú de Administrador ofrece Roles Web cuando la autorización mejorada está activada y Configuración de Roles cuando está desactivada. Tu propia navegación puede hacer la misma elección con ISecurityModelInfo.IsEnhancedAuthorizationEnabledAsync() Blazor o useAuthOptions() React, ambas respondidas desde GET /api/auth/options.
<WebRoleAdmin
configurationUrl={(id) => `/WebRoleConfigurationAdmin/Configuration/${id ?? 'new'}`}
onNavigate={(url) => navigate(url)}
/><WebRoleAdmin />La tabla de permisos y las relaciones de una tabla se eligen de los metadatos del entorno en lugar de escriber, porque se acepta un nombre mal escrito y no concede nada. Los campos de relación siguen el tipo de acceso: Contacto y Cuenta preguntan cómo una fila llega al contacto o cuenta del usuario, Padre pide el permiso padre y cómo llega una fila a su tabla, y Personalizado pide un filtro FetchXML — escrito con el generador de consultas FetchXML en React y como texto en Blazor. Los roles web de un permiso se guardan con él, incluyendo un nuevo permiso; la cuadrícula edita un permiso a la vez por esa razón.
Los cambios llegan a Dataverse a través de Power Pages
Los roles web y los permisos de tabla son registros propios de Power Pages, por lo que esta página y la aplicación Power Pages Management editan los mismos datos, y solo se muestra o cambia el sitio que está en
SecurityOptions.DataverseSecurity.PowerPagesSiteIdel sitio. Power Pages convierte los permisos de tabla de un rol web en el rol de seguridad que empareja con el rol web, en su propio calendario: un nuevo rol web no concede nada hasta que existe ese emparejamiento, y los cambios de rol y privilegio pueden tardar uno o dos minutos en llegar a un usuario iniciado sesión. Se omite una regla que nombra un rol web de otro sitio, y el portal lo registra.
Referencia de API
PortalRoleAdmin Clase
Parámetros
Nombre | Tipo | Default | Descripción |
|---|---|---|---|
ConfigurationUrl | string? | Cuando una configuración se edita, como una URL cuyo |
ConfigurationUrlPortalRoleConfigurationForm
PortalRoleConfigurationForm Clase
Propiedades
Nombre | Tipo | Default | Descripción |
|---|---|---|---|
Record | TableRecord? | La regla está siendo editada. |
RecordWebRoleAdmin
WebRoleAdmin Clase
Parámetros
Nombre | Tipo | Default | Descripción |
|---|---|---|---|
ConfigurationUrl | string? | Cuando una configuración se edita, como una URL cuyo | |
PermissionUrl | string? | Cuando se edita un permiso de tabla, como una URL cuyo |
ConfigurationUrlPermissionUrlWebRoleConfigurationForm
WebRoleConfigurationForm Clase
Propiedades
Nombre | Tipo | Default | Descripción |
|---|---|---|---|
Record | TableRecord? | La regla está siendo editada. |
RecordWebRoleForm
WebRoleForm Clase
FormularioPermisoTabla
TablePermissionForm Clase
Propiedades
Nombre | Tipo | Default | Descripción |
|---|---|---|---|
Record | TableRecord? | El permiso de la tabla está siendo editado. |
Record