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:
// A página da lista: papéis e suas configurações.
<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>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:
// Montado em /RoleConfigurationAdmin/Configuration/:id — 'novo' cria um.
const { id } = useParams();
const isCreateMode = id === 'new';
<RecordContext table="ppp_portalroleconfiguration" {...(isCreateMode ? {} : { id })}>
<SaveContextButton appearance="primary" />
<PortalRoleConfigurationForm />
</RecordContext>
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.
<WebRoleAdmin
configurationUrl={(id) => `/WebRoleConfigurationAdmin/Configuration/${id ?? 'new'}`}
onNavigate={(url) => navigate(url)}
/><WebRoleAdmin />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
PortalRoleAdmin Classe
Parâmetros
Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
ConfigurationUrl | string? | Onde uma configuração é editada, como uma URL cujo |
ConfigurationUrlPortalRoleConfigurationForm
PortalRoleConfigurationForm Classe
Propriedades
Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
Record | TableRecord? | A regra sendo editada. |
RecordWebRoleAdmin
WebRoleAdmin Classe
Parâmetros
Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
ConfigurationUrl | string? | Onde uma configuração é editada, como uma URL cujo | |
PermissionUrl | string? | Quando uma permissão de tabela é editada, como uma URL cujo |
ConfigurationUrlPermissionUrlWebRoleConfigurationForm
WebRoleConfigurationForm Classe
Propriedades
Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
Record | TableRecord? | A regra sendo editada. |
RecordWebRoleForm
WebRoleForm Classe
FormulárioTabelPermissionForm
TablePermissionForm Classe
Propriedades
Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
Record | TableRecord? | A permissão da tabela está sendo editada. |
Record