Administrador de Configuração de Função

PortalRoleAdmin é a página de administração para funções do portal: quais funções o portal possui e quais delas um usuário recém-registrado recebe. Ele vem com o framework em ambas as pilhas, então um portal capta melhorias atualizando seus pacotes — a página que você escreve é o portal do papel e o cabeçalho.

O que está na página

Duas grades, cada uma com Novo, Abrir e Excluir. Cada alteração é escrita assim que você salva ou exclui — não há Salvar em nível de página.

  • Funções no portal — um nome e uma descrição, editados em um painel lateral. O que um papel concede não está configurado aqui: ele está vinculado ao nome do papel em código no início, então adicionar um papel o torna assignável em vez de poderoso, e renomear um o desvincula do que concede.
  • Configurações de funções — Qual papel um usuário recém-registrado recebe, e quando — para ninguém, para todo mundo ou para quem corresponde a uma regra que você escreve.

Regras que decidem quem se qualifica

Uma regra é uma consulta FetchXML sobre contact. Quando alguém se registra, o portal restringe a consulta para esse contato e atribui o papel caso o Dataverse retorne. Junções a tabelas relacionadas são respeitadas, e colunas, ordenam e top não fazem diferença na resposta, então uma consulta copiada de uma visualização funciona como está.

No React, a regra é escrita com o construtor de consultas FetchXML, fixado em Contact com agregados desligados, em uma página própria para que o construtor tenha espaço. Run mostra os contatos que a regra corresponde hoje — a única forma de saber se ele seleciona as pessoas que você quis dizer.

No Blazor, a mesma coluna é editada como texto FetchXML; ainda não existe um construtor de consultas Blazor.

Uma regra quebrada falha silenciosamente

Uma regra vazia, que não é válida no FetchXML, é uma consulta agregada ou está enraizada em uma tabela diferente de Contact não corresponde a ninguém. Nada a reporta como erro — a função simplesmente nunca é atribuída. O editor React alerta sobre cada uma dessas coisas acima do construtor enquanto você escreve a regra.

Adicionando-o ao seu portal

Ambos os modelos de projeto já incluem esta página em /RoleConfigurationAdmin, no menu Admin. Para adicioná-la você mesmo, faça um gate de uma página com [AuthorizeSystemAdmin] e <SystemAdminView> — no React — useIsSystemAdmin() e coloque o componente em:

React Blazor

A página de configuração (React)

configurationUrl abre uma configuração em sua própria página em vez de em um painel lateral. Deixe-a desligada e o painel é usado, o que funciona, mas deixa pouco espaço para o criador de consultas. A página para a qual ela aponta fornece o contexto do registro e o botão Salvar; o próprio formulário é o do framework PortalRoleConfigurationForm:

Funções na web sob autorização aprimorada

Em um portal que executa autorização aprimorada, os usuários recebem papéis web do Power Pages em vez de papéis de portal: o Power Pages concede a cada usuário o papel de segurança do Dataverse que combina com cada um de seus papéis web, e o que esse papel permite vem das permissões de tabela do site. WebRoleAdmin é o equivalente desse PortalRoleAdmin modelo, com três grades: os papéis web do site, suas permissões de tabela — a qual tabela, quais linhas, quais operações e quais papéis web cada um se aplica — e as regras que transferem os papéis web para novos usuários, escritas exatamente como acima. As regras estão na solução Power Portals Pro Enhanced Authorization , que precisa que Power Pages seja instalado no ambiente.

Ambos os modelos de projeto mostram a página aplicável: o menu de Administrador oferece Papéis Web quando a autorização aprimorada está ativada e Configuração de Função quando está desativada. Sua própria navegação pode fazer a mesma escolha com ISecurityModelInfo.IsEnhancedAuthorizationEnabledAsync() no Blazor ou useAuthOptions() no React, ambos respondidos por GET /api/auth/options.

React Blazor

A tabela de permissões e os relacionamentos de uma tabela são escolhidos a partir dos metadados do ambiente em vez de digitados, porque um nome com erro de grafia é aceito e não concede nada. Os campos de relacionamento seguem o tipo de acesso: Contato e Conta perguntam como uma linha chega ao contato ou conta do usuário, Pai pede a permissão do pai e como uma linha chega à sua tabela, e Personalizado pede um filtro FetchXML — escrito com o construtor de consultas FetchXML no React e como texto no Blazor. Os papéis web de uma permissão são salvos com ele, incluindo uma nova permissão; a grade edita uma permissão por vez por esse motivo.

As mudanças chegam ao Dataverse através do Power Pages

Os papéis web e permissões de tabela são registros próprios do Power Pages, então esta página e o aplicativo Power Pages Management editam os mesmos dados, e apenas o site em SecurityOptions.DataverseSecurity.PowerPagesSiteId é mostrado ou alterado. O Power Pages transforma as permissões de tabela de um papel web no papel de segurança que ele emparelha com o papel web, em seu próprio cronograma: um novo papel web não concede nada até que esse pareamento exista, e mudanças de função e privilégio podem levar um ou dois minutos para alcançar um usuário logado. Uma regra que nomeia um papel web de um site diferente é pulada, e o portal a registra.

Referência de API

React Blazor

PortalRoleAdmin Classe

Parâmetros

Nome
Tipo
Padrão
Descrição
ConfigurationUrlstring?
Onde uma configuração é editada, como uma URL cujo {0} é o id da configuração — para exemplo 'RoleConfigurationAdmin/Configuration/{0}'. Defina e o Create and Open Botões na grade de configuração naveguem até essa página, com novo no lugar do ID para um novo. Se não se colocam, eles abrem um painel lateral.
Nome: ConfigurationUrl
Tipo: string?
Descrição: Onde uma configuração é editada, como uma URL cujo {0} é o id da configuração — para exemplo 'RoleConfigurationAdmin/Configuration/{0}'. Defina e o Create and Open Botões na grade de configuração naveguem até essa página, com novo no lugar do ID para um novo. Se não se colocam, eles abrem um painel lateral.

PortalRoleConfigurationForm

React Blazor

PortalRoleConfigurationForm Classe

Propriedades

Nome
Tipo
Padrão
Descrição
RecordTableRecord?
A regra sendo editada.
Nome: Record
Tipo: TableRecord?
Descrição: A regra sendo editada.

WebRoleAdmin

React Blazor

WebRoleAdmin Classe

Parâmetros

Nome
Tipo
Padrão
Descrição
ConfigurationUrlstring?
Onde uma configuração é editada, como uma URL cujo {0} é o id da configuração — para exemplo 'WebRoleConfigurationAdmin/Configuration/{0}'. Defina e o Create and Open Botões na grade de configuração naveguem até essa página, com novo no lugar do ID para um novo. Se não se colocam, eles abrem um painel lateral.
PermissionUrlstring?
Quando uma permissão de tabela é editada, como uma URL cujo {0} é o id da permissão — para exemplo 'WebRoleConfigurationAdmin/Permission/{0}'. Defina e o Create and Open botões na grade de permissões da tabela naveguem até essa página, com new no lugar do ID para um novo. Se não estiver ajustado, eles abrem um painel lateral.
Nome: ConfigurationUrl
Tipo: string?
Descrição: Onde uma configuração é editada, como uma URL cujo {0} é o id da configuração — para exemplo 'WebRoleConfigurationAdmin/Configuration/{0}'. Defina e o Create and Open Botões na grade de configuração naveguem até essa página, com novo no lugar do ID para um novo. Se não se colocam, eles abrem um painel lateral.
Nome: PermissionUrl
Tipo: string?
Descrição: Quando uma permissão de tabela é editada, como uma URL cujo {0} é o id da permissão — para exemplo 'WebRoleConfigurationAdmin/Permission/{0}'. Defina e o Create and Open botões na grade de permissões da tabela naveguem até essa página, com new no lugar do ID para um novo. Se não estiver ajustado, eles abrem um painel lateral.

WebRoleConfigurationForm

React Blazor

WebRoleConfigurationForm Classe

Propriedades

Nome
Tipo
Padrão
Descrição
RecordTableRecord?
A regra sendo editada.
Nome: Record
Tipo: TableRecord?
Descrição: A regra sendo editada.

WebRoleForm

React Blazor

WebRoleForm Classe

FormulárioTabelPermissionForm

React Blazor

TablePermissionForm Classe

Propriedades

Nome
Tipo
Padrão
Descrição
RecordTableRecord?
A permissão da tabela está sendo editada.
Nome: Record
Tipo: TableRecord?
Descrição: A permissão da tabela está sendo editada.