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:

React Blazor

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:

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.

React Blazor

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.PowerPagesSiteId el 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

Reaccionar Blazor

PortalRoleAdmin Clase

Parámetros

Nombre
Tipo
Default
Descripción
ConfigurationUrlstring?
Cuando una configuración se edita, como una URL cuyo {0} es el id de la configuración — para ejemplo 'RoleConfigurationAdmin/Configuration/{0}'. Configúralo y el Crear y Abrir los botones en la cuadrícula de configuración se desplazan a esa página, con nuevo en lugar del ID para uno nuevo. Si no se ajusta, abren un panel lateral.
Nombre: ConfigurationUrl
Tipo: string?
Descripción: Cuando una configuración se edita, como una URL cuyo {0} es el id de la configuración — para ejemplo 'RoleConfigurationAdmin/Configuration/{0}'. Configúralo y el Crear y Abrir los botones en la cuadrícula de configuración se desplazan a esa página, con nuevo en lugar del ID para uno nuevo. Si no se ajusta, abren un panel lateral.

PortalRoleConfigurationForm

Reaccionar Blazor

PortalRoleConfigurationForm Clase

Propiedades

Nombre
Tipo
Default
Descripción
RecordTableRecord?
La regla está siendo editada.
Nombre: Record
Tipo: TableRecord?
Descripción: La regla está siendo editada.

WebRoleAdmin

Reaccionar Blazor

WebRoleAdmin Clase

Parámetros

Nombre
Tipo
Default
Descripción
ConfigurationUrlstring?
Cuando una configuración se edita, como una URL cuyo {0} es el id de la configuración — para ejemplo 'WebRoleConfigurationAdmin/Configuration/{0}'. Configúralo y el Crear y Abrir los botones en la cuadrícula de configuración se desplazan a esa página, con nuevo en lugar del ID para uno nuevo. Si no se ajusta, abren un panel lateral.
PermissionUrlstring?
Cuando se edita un permiso de tabla, como una URL cuyo {0} es el id del permiso — para Ejemplo 'WebRoleConfigurationAdmin/Permission/{0}'. Configúralo y el Crear y Abrir los botones en la cuadrícula de permisos de la tabla se desplazan a esa página, con nuevo en lugar de Identificación para uno nuevo. Si no se ajusta, abren un panel lateral.
Nombre: ConfigurationUrl
Tipo: string?
Descripción: Cuando una configuración se edita, como una URL cuyo {0} es el id de la configuración — para ejemplo 'WebRoleConfigurationAdmin/Configuration/{0}'. Configúralo y el Crear y Abrir los botones en la cuadrícula de configuración se desplazan a esa página, con nuevo en lugar del ID para uno nuevo. Si no se ajusta, abren un panel lateral.
Nombre: PermissionUrl
Tipo: string?
Descripción: Cuando se edita un permiso de tabla, como una URL cuyo {0} es el id del permiso — para Ejemplo 'WebRoleConfigurationAdmin/Permission/{0}'. Configúralo y el Crear y Abrir los botones en la cuadrícula de permisos de la tabla se desplazan a esa página, con nuevo en lugar de Identificación para uno nuevo. Si no se ajusta, abren un panel lateral.

WebRoleConfigurationForm

Reaccionar Blazor

WebRoleConfigurationForm Clase

Propiedades

Nombre
Tipo
Default
Descripción
RecordTableRecord?
La regla está siendo editada.
Nombre: Record
Tipo: TableRecord?
Descripción: La regla está siendo editada.

WebRoleForm

Reaccionar Blazor

WebRoleForm Clase

FormularioPermisoTabla

Reaccionar Blazor

TablePermissionForm Clase

Propiedades

Nombre
Tipo
Default
Descripción
RecordTableRecord?
El permiso de la tabla está siendo editado.
Nombre: Record
Tipo: TableRecord?
Descripción: El permiso de la tabla está siendo editado.