Convites

Um convite traz as pessoas para o portal de propósito: a equipe escolhe quem o recebe e quais funções ele concede, e cada destinatário recebe um link próprio. Depois, cria o login no contato que já existe para eles — com senha ou login externo — ou, se já tiverem um, adiciona os papéis a ele. É assim que um portal que não permite o cadastro de estranhos traz seus usuários a bordo.

Como um convite viaja

Um convite é escrito como rascunho, e enviá-lo só muda seu status. O próprio processo temporizado do portal — rodando a cada cinco minutos em cada instância — percebe, calcula os destinatários e envia por e-mail a cada um um link com seu próprio código. Apenas o hash do código é armazenado, então ler a tabela não dá a ninguém um link funcionando.

  1. Rascunho — escolha quem recebe, as vagas que ele concede, seu vencimento e o e-mail por que é enviado.
  2. Pronto para enviar — Enviar foi pressionado; o portal o capta em poucos minutos.
  3. Enviado — os destinatários existem e seus links funcionam até expirar (30 dias após o envio, a menos que você defina uma data).
  4. Expirado ou Cancelado — os links param de funcionar.

Quem recebe

Um convite vai para um contato, para uma conta — todo contato ativo que ela tem — ou para qualquer critério escrito com o retorno do construtor de consultas FetchXML. Os destinatários são calculados quando o convite é enviado, com acesso da pessoa que enviou, e enviá-lo novamente depois alcança quem corresponder até lá e não o recebeu, sem enviar e-mail para ninguém duas vezes. Contatos sem endereço de e-mail são pulados e, portanto, a menos que o convite diga o contrário, são os contatos que já têm login no portal.

Quem recebe é fixo assim que é enviado

Uma vez que um convite sai do Rascunho, quem o recebe e os papéis que ele concede não podem mudar — os papéis são lidos quando alguém aceita, então mudá-los mudaria o que as pessoas que já possuem um link recebem. A data de expiração ainda pode ser movida. Cada destinatário pode ser reenviado por um novo link ou revogado por conta própria.

O e-mail

Deixado por conta própria, o portal envia seu próprio e-mail, a partir da localização (app.email-templates.invitation). Para escrever o seu, crie um modelo de contato ou e-mail global no Dataverse, coloque {{invitation-link}} onde o link deve ir e escolha no convite. Um modelo sem o marcador falha no destinatário, em vez de enviar um e-mail que ninguém pode agir.

Aceitando

O link se abre /Account/Invitation. Alguém sem login cria um ali — o endereço de e-mail do contato convidado, com senha ou qualquer login externo configurado — mesmo quando o cadastro está desativado. Alguém com login faz login e aceita; alguém que fez login como outra pessoa é solicitado a sair da sessão. Seguir um link enviado para o endereço conta como confirmação, então nenhum e-mail de confirmação segue. Um código desconhecido, usado, revogado, expirado ou para outro portal diz a mesma coisa.

O discurso público

O processo temporizado funciona fora de qualquer requisição, então ele lê o endereço de PowerPortalsPro:PublicUrl onde o portal é alcançado — necessário, para cada portal. Seus links apontam para lá, e é o endereço que a licença do portal é verificada ao decidir quais convites são seus. Defina por ambiente para que os links do UAT apontem para o UAT; no Azure App Service é a PowerPortalsPro__PublicUrl configuração do aplicativo, marcada como uma configuração de slot de implantação. Um portal rodando localhost não envia convites a menos que PowerPortalsPro:Invitations:DevelopmentWebsiteId nomeie o registro do site para agir como um local.

Ligando a fiação

InvitationAdmin lista os convites, com Enviar e Cancelar; InvitationForm edita um, com seus destinatários abaixo. Gate a página na verificação de administrador do portal, como nas outras páginas de administrador, e dê ao formulário uma página própria: os critérios são escritos com o construtor de consultas FetchXML, que quer a sala. Cada alteração é feita como membro da equipe logado, então a segurança do Dataverse se aplica aqui como no aplicativo orientado a modelos.

React Blazor

InvitationAdmin

React Blazor

InvitationAdmin Classe

Parâmetros

Nome
Tipo
Padrão
Descrição
InvitationUrlstring?
Quando um convite é editado, como uma URL cujo {0} é seu id — por exemplo 'InvitationAdmin/Invitation/{0}'. Defina, crie e abra a navegação ali, com novo no lugar do ID para um novo; se não estiver configurado, eles abrem um painel lateral.
Nome: InvitationUrl
Tipo: string?
Descrição: Quando um convite é editado, como uma URL cujo {0} é seu id — por exemplo 'InvitationAdmin/Invitation/{0}'. Defina, crie e abra a navegação ali, com novo no lugar do ID para um novo; se não estiver configurado, eles abrem um painel lateral.

Formulário de Convite

React Blazor

InvitationForm Classe

Propriedades

Nome
Tipo
Padrão
Descrição
RecordTableRecord?
O convite sendo editado.
Nome: Record
Tipo: TableRecord?
Descrição: O convite sendo editado.