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 Administrador. Para adicioná-la você mesmo, faça um gate de uma página no SystemAdmin papel 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 [Authorize(Roles = "SystemAdmin")]
@using PowerPortalsPro.Web.Blazor.FluentUI.Components
<AuthorizeView Roles="SystemAdmin">
<Authorized>
<PortalRoleAdmin />
</Authorized>
</AuthorizeView>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 Dataverse que ele combina com cada um de seus papéis web, e o que esse papel permite vem das permissões da tabela do site. WebRoleAdmin é o equivalente a PortalRoleAdmin para esse modelo — uma grade de regras, cada uma entregando uma função web para cada novo usuário ou para aquelas que correspondem a uma regra escrita exatamente como acima. As regras estão na solução Power Portals Pro Enhanced Authorization , que exige que Power Pages seja instalado no ambiente.
Ambos os modelos de projeto mostram a página aplicável: o menu de Administração oferece Configuração de Função 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 a partir de GET /api/auth/options.
<WebRoleAdmin
configurationUrl={(id) => `/WebRoleConfigurationAdmin/Configuration/${id ?? 'new'}`}
onNavigate={(url) => navigate(url)}
/><WebRoleAdmin />Os próprios papéis web estão presentes nas Power Pages
Crie funções web e dê permissões de tabela no aplicativo Power Pages Management — essa página decide apenas quem as recebe. Uma função web sem função de segurança pareada não concede nada até que o Power Pages pareie uma, e uma função web pertencente a um site diferente do portal seja pulada; o portal registra ambas. Mudanças de função e privilégio podem levar um ou dois minutos para chegar a um usuário logado.
