役割設定管理者
PortalRoleAdmin はポータルロールの管理ページで、ポータルがどのロールを持っているか、そして新たに登録されたユーザーにどのロールが割り当てられているかを示します。両方のスタックにフレームワークが付属しているため、ポータルはパッケージを更新することで改善を受け取ります。あなたが書いたページがロールゲートと見出しです。
ページの内容
2つのグリッドで、それぞれ「New」「Open」「Delete」があります。すべての変更は保存または削除した瞬間に書き込まれます — ページレベルの保存はありません。
- ポータルの役割 — 名前と説明をサイドパネルで編集しています。ロールが 付与する 内容はここでは設定されていません。起動時のコードでロール名にバインドされているため、ロールを追加すると強力ではなく割り当て可能になり、名前を変更すると付与内容から切り離されます。
- 役割構成 — 新たに登録されたユーザーにどの役割が与えられ、いつ与えられるか――誰にも与えられない、全員に、あるいはあなたが書いたルールに合致する誰かに。
資格を決めるルール
ルールとは contact上のFetchXMLクエリです。誰かが登録すると、ポータルはその連絡先にクエリを絞り込み、Dataverseが返せば役割を割り当てます。関連するテーブルへのジョインは尊重され、列、ソート、 top は回答に影響しないため、ビューからコピーしたクエリはそのまま動作します。
Reactでは、 FetchXMLクエリビルダーをContactにピン留めし、集約をオフにして独立したページに書き、ビルダーにスペースを確保します。 Runは ルールが今日マッチする連絡先を表示します。これが、あなたが意図した人物を選んでいるかどうかを知る唯一の方法です。
Blazorでは同じ列がFetchXMLテキストとして編集されています。まだBlazorクエリビルダーはありません。
破られたルールは静かに失敗する
空のルール、有効なFetchXMLでない、集約クエリ、またはContactが誰 にもマッチしないテーブルに根ざしているルール。エラーとして報告されるものは何もありません — 単に役割が割り当てられていないだけです。Reactエディタはルール作成中にビルダーの上でこれらの各点について警告します。
ポータルに追加する
両方のプロジェクトテンプレートには、 /RoleConfigurationAdminの管理者メニューの中にこのページが含まれています。自分で追加するには、 SystemAdmin ロールのページをゲートし、コンポーネントを以下に入力してください:
// リストページ:役割とその構成。
<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>設定ページ(React)
configurationUrl サイドパネルではなく、独自のページで構成を開きます。オフにするとパネルが使われますが、クエリビルダーのスペースがほとんど残りません。指向するページはレコードコンテキストと保存ボタンを提供します。フォーム自体がフレームワークの PortalRoleConfigurationFormです:
// /RoleConfigurationAdmin/Configuration/:id にマウント — 「new」が作成します。
const { id } = useParams();
const isCreateMode = id === 'new';
<RecordContext table="ppp_portalroleconfiguration" {...(isCreateMode ? {} : { id })}>
<SaveContextButton appearance="primary" />
<PortalRoleConfigurationForm />
</RecordContext>
強化認可下のウェブロール
強化認可を実行しているポータルでは、ユーザーにはポータルロールではなくPower Pages のウェブロール が与えられます。Power Pagesは各ユーザーに、それぞれのWebロールとペアリングするDataverseセキュリティロールを付与し、その役割が許可する権限はサイトのテーブル権限から得られます。 WebRoleAdmin はそのモデルの PortalRoleAdmin の対応物であり、1つのルールグリッドで、それぞれが新規ユーザーまたは上記のルールに一致するユーザーにウェブロールを割り当てます。ルールは Power Portals Pro Enhanced Authorization ソリューションに存在し、環境にPower Pagesをインストールする必要があります。
両方のプロジェクトテンプレートは、どのページが適用されるかを表示します。管理者メニューでは強化認可がオンの時にWebロール設定、オフの時にロール設定が提供されます。自分のナビゲーションも、Blazorの ISecurityModelInfo.IsEnhancedAuthorizationEnabledAsync() やReactの useAuthOptions() で同じ選択をすることができ、どちらも GET /api/auth/optionsから回答しています。
<WebRoleAdmin
configurationUrl={(id) => `/WebRoleConfigurationAdmin/Configuration/${id ?? 'new'}`}
onNavigate={(url) => navigate(url)}
/><WebRoleAdmin />ウェブロール自体はPower Pagesに存在します
Power Pages ManagementアプリでWebロールを作成し、テーブル権限を与えます — このページが誰に権限を与えるかのみを決めます。ペアリングされたセキュリティロールがないウェブロールは、Power Pagesがペアリングするまで何も付与されません。また、ポータルのものとは異なるサイトに属するウェブロールはスキップされます。ポータルは両方をログアップします。ロールや権限の変更はサインイン済みユーザーに届くまでに1〜2分かかることがあります。
