Administrateur de configuration des rôles
PortalRoleAdmin est la page d’administration des rôles du portail : quels rôles possède le portail, et lesquels un nouvel utilisateur enregistré est attribué. Il est livré avec le framework sur les deux piles, donc un portail reprend des améliorations en mettant à jour ses packages — la page que vous écrivez est la porte du rôle et l’en-tête.
Qu’y a-t-il sur la page
Deux grilles, chacune avec Nouvelles, Ouvrir et Supprimer. Chaque modification est écrite dès que vous la sauvegardez ou la supprimez — il n’y a pas de sauvegarde au niveau de la page.
- Rôles du portail — un nom et une description, modifiés dans un panneau latéral. Ce qu’un rôle accorde n’est pas configuré ici : il est lié au nom du rôle en code au démarrage, donc ajouter un rôle le rend assignable plutôt que puissant, et le renommer le détache de ce qu’il accorde.
- Configurations de rôles — quel rôle un nouvel utilisateur inscrit est attribué, et quand — à personne, à tout le monde, ou à quiconque correspond à une règle que vous écrivez.
Règles qui déterminent qui est éligible
Une règle est une requête FetchXML sur contact. Lorsqu’une personne s’enregistre, le portail resserre la requête à ce contact et attribue le rôle si Dataverse les renvoie. Les jointures vers des tables associées sont respectées, et les colonnes, trient et top ne font aucune différence pour la réponse, donc une requête copiée d’une vue fonctionne telle quelle.
Dans React, la règle est écrite avec le constructeur de requêtes FetchXML, épinglée sur Contact avec les agrégats désactivés, sur une page à part entière pour que le constructeur ait de la place. Run montre les contacts auxquels la règle correspond aujourd’hui — la seule façon de savoir si elle sélectionne les personnes dont vous parlez.
Dans Blazor, la même colonne est modifiée en tant que texte FetchXML ; il n’existe pas encore de créateur de requêtes Blazor.
Une règle brisée échoue discrètement
Une règle vide, qui n’est pas valide en FetchXML, qui est une requête agrégée, ou qui est enracinée dans une table autre que Contact ne correspond à personne. Rien ne la signale comme une erreur — le rôle n’est tout simplement jamais attribué. L’éditeur React avertit de chacun de ces éléments au-dessus du constructeur pendant que vous écrivez la règle.
L’ajouter à votre portail
Les deux modèles de projet incluent déjà cette page à /RoleConfigurationAdmin, dans le menu Admin. Pour l’ajouter vous-même, ouvrez une page sur le SystemAdmin rôle et insérez le composant dans :
// La page de liste : rôles et leurs configurations.
<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>La page de configuration (React)
configurationUrl ouvre une configuration sur sa propre page au lieu d’un panneau latéral. Si on la laisse désactivée, le panneau est utilisé, ce qui fonctionne mais laisse peu de place au constructeur de requêtes. La page vers laquelle il pointe fournit le contexte de l’enregistrement et le bouton Enregistrer ; le formulaire lui-même est celui du PortalRoleConfigurationFormframework :
// Monté sur /RoleConfigurationAdmin/Configuration/ :id — « nouveau » en crée un.
const { id } = useParams();
const isCreateMode = id === 'new';
<RecordContext table="ppp_portalroleconfiguration" {...(isCreateMode ? {} : { id })}>
<SaveContextButton appearance="primary" />
<PortalRoleConfigurationForm />
</RecordContext>
Rôles web sous autorisation renforcée
Sur un portail fonctionnant avec une autorisation améliorée, les utilisateurs se voient attribuer des rôles web Power Pages plutôt que des rôles de portail : Power Pages accorde à chaque utilisateur le rôle de sécurité Dataverse qu’il associe à chacun de leurs rôles web, et ce que ce rôle permet provient des permissions de table du site. WebRoleAdmin C’est l’équivalent de PortalRoleAdmin pour ce modèle — une grille de règles, chacune remettant un rôle web à chaque nouvel utilisateur ou à ceux correspondant à une règle écrite exactement comme ci-dessus. Les règles sont intégrées à la solution Power Portals Pro Enhanced Authorization , qui nécessite l’installation de Power Pages dans l’environnement.
Les deux modèles de projet affichent la page qui s’applique : le menu Admin propose la Configuration du Rôle Web lorsque l’autorisation améliorée est activée et la Configuration du Rôle lorsqu’elle est désactivée. Votre propre navigation peut faire le même choix avec ISecurityModelInfo.IsEnhancedAuthorizationEnabledAsync() Blazor ou useAuthOptions() React, les deux répondant depuis GET /api/auth/options.
<WebRoleAdmin
configurationUrl={(id) => `/WebRoleConfigurationAdmin/Configuration/${id ?? 'new'}`}
onNavigate={(url) => navigate(url)}
/><WebRoleAdmin />Les rôles web eux-mêmes existent dans Power Pages
Créer des rôles web et leur accorder des permissions de table dans l’application Power Pages Management — cette page décide uniquement qui les obtient. Un rôle web sans rôle de sécurité jumelé n’accorde rien tant que Power Pages n’en associe pas un, et qu’un rôle web appartenant à un site différent de celui du portail est sauté ; le portail enregistre les deux. Les changements de rôle et de privilège peuvent prendre une minute ou deux pour atteindre un utilisateur connecté.
