招待状
招待状は意図的に人々をポータルに誘導します。スタッフが誰に受け取るか、そしてどの役割が与えられるかを選び、各受取人に自分専用のリンクがメールで送られます。それに従うと、すでに存在する連絡先にログインができ、パスワードや外部サインインが設定されています。もしすでにアカウントがあれば、その連絡先に追加されます。これは、見知らぬ人に登録を許可しないポータルがユーザーを巻き込む方法です。
招待状の伝わり方
招待状は 下書きとして書かれ、送信してもステータスのみが変わります。ポータル自身の制限付きプロセス(各ポータルインスタンスで5分ごとに実行)がそれに気づき、受信者を特定し、それぞれに独自のコード付きのリンクをメールで送ります。コードのハッシュだけが保存されるため、表を読んでも動作するリンクは得られません。
- ドラフト — 誰に受け取るか、どの役割を与えるか、有効期限、送信されるメールを選びます。
- 送信準備完了 — 送信ボタンが押された;ポータルは数分以内にそれを拾い上げる。
- 送信済み — 受信者は存在し、そのリンクは有効期限切れまで有効です(送信後30日、日付を設定しない限り)。
- 期限切れ または キャンセル済み — リンクが機能しなくなります。
受け取る者
招待状は 連絡先、 アカウント (そのアカウントにあるすべてのアクティブな連絡先)、またはFetchXMLクエリビルダーの返信で書かれた 基準 に送られます。招待状が送信された時点で受信者は設定され、送信者のアクセス権を持ち、後で再度送信すると、その時点でマッチしていてまだ届いていない人に届きます。誰にも二度メールを送ることはありません。メールアドレスのない連絡先はスキップされ、招待状に特に記載がない限り、すでにポータルのログインを持っている連絡先が対象となります。
誰が送付すれば受け取るかは固定されます
一度Draftから招待が出ると、誰が受け取るか、そしてそれに与えられる役割は変更できない。誰かが受け入れた時点で役割が読み取られるため、変更するとすでにリンクを持っている人が受け取るものが変わる。有効期限は変わることもある。各受取人は新しいリンクを再送したり、自分で取り消したりできる。
メール
ポータルは自らのローカリゼーション(app.email-templates.invitation)から独自のメールを送信します。自分で書くには、Dataverseで連絡先またはグローバルメールテンプレートを作成し、リンクを置くべき場所に {{invitation-link}} を入れ、招待状で選択してください。プレースホルダーのないテンプレートは、誰も対応できないメールを送る代わりに受信者に失敗します。
受け入れ
リンクが開 /Account/Invitation。ログインしていない人が、そこにログインを作成します。招待された連絡先のメールアドレスで、パスワードや外部サインインの設定済みで、サインアップがオフになっていても。ログインしている人がサインインして承諾します。別の人としてサインインした人がサインアウトを求められます。そのアドレスに郵送されたリンクをたどることは確認とみなされるため、確認メールは届きません。不明、使用済み、取り消されたコード、期限切れ、または他のポータル用コードはすべて同じ内容を示します。
公共放送
この時間制限プロセスはリクエストの外で動作し、ポータルが PowerPortalsPro:PublicUrl からアクセスされたアドレスを読み取ります — すべてのポータルで必須です。リンクはそこを指し、どの招待がポータル自身のものかを決める際にライセンスがチェックされるアドレスでもあります。環境ごとに設定して、UATのリンクがUATを指すようにしてください;Azure App Serviceでは、 PowerPortalsPro__PublicUrl アプリケーション設定で、デプロイメントスロット設定としてマークされています。 localhost 上で動作するポータルは、 PowerPortalsPro:Invitations:DevelopmentWebsiteId がウェブサイトレコードを指定しない限り招待を送信しません。
{
"PowerPortalsPro": {
"PublicUrl": "https://portal.contoso.com"
}
}
配線
InvitationAdmin 招待を一覧にし、送信・キャンセルを表示します。 InvitationForm は一つを編集し、その下に受信者が表示されます。ポータル管理者チェックでページをゲートし、他の管理ページと同様にフォームに独自のページを与えます。条件はFetchXMLクエリビルダーで作成され、部屋を割り当てます。すべての変更はサインインしたスタッフとして行われるため、Dataverseのセキュリティはモデル駆動型アプリと同様にここでも適用されます。
// それぞれの招待状は独立したページで開く
<InvitationAdmin
invitationUrl={(id) => `/InvitationAdmin/Invitation/${id ?? 'new'}`}
onNavigate={(url) => navigate(url)}
/>@attribute [Route("InvitationAdmin")]
@attribute [AuthorizeSystemAdmin]
@using PowerPortalsPro.Web.Blazor.FluentUI.Components
<SystemAdminView>
<Authorized>
<InvitationAdmin InvitationUrl="InvitationAdmin/Invitation?invitationId={0}" />
</Authorized>
</SystemAdminView>// RecordContextで保存ボタン付きの招待を1つ
const { id } = useParams();
const isCreateMode = id === 'new';
<RecordContext table="ppp_invitation" {...(isCreateMode ? {} : { id })}>
<SaveContextButton appearance="primary" />
<InvitationForm />
</RecordContext>
招待管理者
InvitationAdmin クラス
パラメータ
名称 | 種類 | デフォルト | 概要 |
|---|---|---|---|
InvitationUrl | string? | 例えば、招待状の |
InvitationUrl招待フォーム
InvitationForm クラス
性質
名称 | 種類 | デフォルト | 概要 |
|---|---|---|---|
Record | TableRecord? | 招待状が編集されている。 |
Record