Einladungen
Eine Einladung bringt die Menschen absichtlich ins Portal: Die Mitarbeiter entscheiden, wer sie erhält und welche Rollen sie vergibt, und jeder Empfänger erhält einen eigenen Link per E-Mail. Danach erstellt man seinen Login auf den bereits vorhandenen Kontakt – mit Passwort oder externer Anmeldung – oder, falls bereits vorhanden, fügt er die Rollen hinzu. So bringt ein Portal, das keine Registrierung von Fremden erlaubt, seine Nutzer dazu.
Wie eine Einladung reist
Eine Einladung wird als Entwurf geschrieben, und das Versenden ändert nichts außer ihrem Status. Der eigene zeitgesteuerte Prozess des Portals – der in jeder Portalinstanz alle fünf Minuten läuft – bemerkt sie, berechnet die Empfänger und schickt jedem einen Link mit eigenem Code per E-Mail. Nur der Hash des Codes wird gespeichert, sodass das Lesen der Tabelle niemandem einen funktionierenden Link liefert.
- Entwurf – entscheide , wer es erhält, welche Rollen es vergibt, sein Ablaufdatum und die E-Mail, in die es verschickt wird.
- Bereit zum Senden — Senden wurde gedrückt; das Portal erfasst es innerhalb weniger Minuten.
- Gesendet – die Empfänger existieren und ihre Links funktionieren, bis es abläuft (30 Tage nach dem Versand, es sei denn, du setzt ein Datum).
- Abgelaufen oder storniert – die Links funktionieren nicht mehr.
Wer es erhält.
Eine Einladung geht an einen Kontakt, an ein Konto – an jeden aktiven Kontakt, den es hat – oder an die Kriterien , die mit der FetchXML Query Builder-Rückgabe formuliert wurden. Die Empfänger werden beim Versand der Einladung mit Zugang der Person ausgearbeitet, und das erneute Senden erreicht später den Passenden, der sie bis dahin nicht erhalten hat, ohne jemandem zweimal eine E-Mail zu schreiben. Kontakte ohne E-Mail-Adresse werden übersprungen und so, sofern die Einladung nichts anderes sagt, Kontakte, die bereits einen Portal-Login haben.
Wer es empfängt, wird nach dem Senden festgelegt
Sobald eine Einladung den Entwurf verlässt, können sich der Empfänger und die vergebenen Rollen nicht mehr ändern – die Rollen werden gelesen, wenn jemand zustimmt, sodass eine Änderung verändert, was bereits einen Link besitzt. Ihr Ablaufdatum kann sich weiterhin verschieben. Jeder Empfänger kann einen neuen Link erneut erhalten oder selbst widerrufen werden.
Die E-Mail
Das Portal überlässt sich selbst und sendet seine eigene E-Mail aus seiner Lokalisierung (app.email-templates.invitation). Um eigene zu schreiben, erstellen Sie eine Kontakt- oder globale E-Mail-Vorlage in Dataverse, geben {{invitation-link}} Sie an, wo der Link hingehört, und wählen Sie sie in der Einladung aus. Eine Vorlage ohne Platzhalter versagt beim Empfänger, anstatt eine E-Mail zu senden, auf die niemand reagieren kann.
Akzeptieren
Der Link öffnet sich /Account/Invitation. Jemand ohne Login erstellt dort einen – die eigene E-Mail-Adresse des eingeladenen Kontakts, mit Passwort oder einer konfigurierten externen Anmeldung – selbst wenn die Anmeldung deaktiviert ist. Jemand mit Login meldet sich an und akzeptiert; jemand, der als andere Person angemeldet ist, wird gebeten, sich abzumelden. Einem Link zu folgen, der an die Adresse gemailt wird, gilt als Bestätigung, daher folgt keine Bestätigungs-E-Mail. Ein Code, der unbekannt, benutzt, widerrufen, abgelaufen oder für ein anderes Portal ist, sagt alle dasselbe.
Die öffentliche Ansprache
Der zeitgesteuerte Prozess arbeitet außerhalb jeder Anfrage und liest also die Adresse, von PowerPortalsPro:PublicUrl der das Portal erreicht wird – erforderlich, für jedes Portal. Seine Links zeigen dorthin, und es ist die Adresse, auf die die Lizenz des Portals geprüft wird, wenn entschieden wird, welche Einladungen ihre eigenen sind. Stellen Sie es pro Umgebung so ein, dass die UAT-Links auf UAT zeigen; in Azure App Service ist es die PowerPortalsPro__PublicUrl Anwendungseinstellung, die als Bereitstellungs-Slot-Einstellung markiert ist. Ein Portal, das auf localhost läuft, sendet keine Einladungen, es sei denn PowerPortalsPro:Invitations:DevelopmentWebsiteId , sie nennt den Website-Datensatz, als der sie operieren soll.
{
"PowerPortalsPro": {
"PublicUrl": "https://portal.contoso.com"
}
}
Verkabeln
InvitationAdmin listet die Einladungen mit Senden und Stornieren auf; InvitationForm bearbeitet eine, mit den Empfängern darunter. Sperre die Seite auf der Portal-Administrator-Kontrolle, wie auf den anderen Admin-Seiten, und gib dem Formular eine eigene Seite: Die Kriterien werden mit dem FetchXML-Abfragegenerator geschrieben, der den Raum benötigt. Jede Änderung erfolgt als angemeldetes Mitarbeiter, daher gilt die Dataverse-Sicherheit hier genauso wie in der modellgesteuerten App.
// Öffnet jede Einladung auf einer eigenen Seite
<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>// Eine Einladung, in einem RecordContext mit einer Speichern-Schaltfläche
const { id } = useParams();
const isCreateMode = id === 'new';
<RecordContext table="ppp_invitation" {...(isCreateMode ? {} : { id })}>
<SaveContextButton appearance="primary" />
<InvitationForm />
</RecordContext>
EinladungAdmin
InvitationAdmin Baureihe
Parameter
Name | Typ | Default | Beschreibung |
|---|---|---|---|
InvitationUrl | string? | Wo eine Einladung bearbeitet wird, zum Beispiel als |
InvitationUrlEinladungsformular
InvitationForm Baureihe
Eigenschaften
Name | Typ | Default | Beschreibung |
|---|---|---|---|
Record | TableRecord? | Die Einladung wird bearbeitet. |
Record