Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Magic link authentication flow #5

Open
CloudManPro opened this issue Nov 23, 2024 · 0 comments
Open

Magic link authentication flow #5

CloudManPro opened this issue Nov 23, 2024 · 0 comments

Comments

@CloudManPro
Copy link
Collaborator

CloudManPro commented Nov 23, 2024

Fluxo Completo do Sistema de Validação de E-mail

1. Entrada Inicial do Usuário

Descrição: O usuário insere o e-mail no front-end para iniciar o processo.

Fluxo:

  1. O usuário acessa a página inicial e insere o e-mail no campo fornecido.
  2. O front-end envia o e-mail para a API/Lambda com a ação verify.

2. Verificação do E-mail na Lambda

Descrição: A Lambda verifica se o e-mail já está cadastrado na DynamoDB.

Fluxo:

  1. A Lambda consulta a tabela DynamoDB:
    • Partition Key: email
    • Sort Key: user
  2. Cenários possíveis:
    • Usuário já registrado:
      1. Um OTP é gerado e salvo na tabela com TTL de 2 dias.
      2. Um link mágico é criado com o OTP e a informação de que o usuário já existe (exists=true).
      3. O link é enviado ao e-mail do usuário pelo SES.
      4. A Lambda retorna uma resposta ao front-end informando que o link foi enviado.
    • Usuário não registrado:
      1. A Lambda informa ao front-end que o e-mail não está registrado e solicita o nome do usuário.

3. Entrada do Nome pelo Usuário

Descrição: O usuário insere o nome no front-end e submete novamente junto ao e-mail.

Fluxo:

  1. O usuário insere o nome completo no campo fornecido.
  2. O front-end envia o e-mail e o nome para a API/Lambda com a ação register.

4. Registro de Novo Usuário

Descrição: A Lambda registra o novo usuário como "não confirmado" na tabela DynamoDB.

Fluxo:

  1. A Lambda salva o novo usuário na tabela com os seguintes dados:
    • Partition Key: email
    • Sort Key: user
    • Atributos:
      • name: Nome do usuário.
      • confirmed: False.
      • ttl: Expiração de 2 dias.
      • created_at: Timestamp atual.
  2. Um OTP é gerado e salvo com TTL de 2 dias.
  3. Um link mágico é gerado e enviado ao e-mail do usuário pelo SES.
  4. A Lambda retorna uma resposta ao front-end confirmando o registro e envio do link.

5. Processamento do Link Mágico

Descrição: O usuário clica no link mágico para verificar e confirmar o e-mail.

Fluxo:

  1. O link contém:
    • email
    • otp
    • exists (indica se o usuário já existia).
  2. A página processa os parâmetros e envia os dados para a API/Lambda com a ação process-link.
  3. A Lambda:
    • Valida o OTP na tabela DynamoDB:
      • Se inválido ou expirado: retorna erro.
    • Remove o OTP da tabela.
    • Verifica se o e-mail do usuário está confirmado:
      • Se não estiver:
        • Atualiza o registro para remover o TTL.
        • Define o atributo confirmed como True.
  4. A Lambda retorna uma mensagem confirmando o sucesso da operação ou indicando erro.

6. Frontend

Páginas e Funcionalidades:

Authy.html

  • Coleta o e-mail inicial.
  • Solicita o nome do usuário caso o e-mail não esteja registrado.
  • Inicia o fluxo de verificação/registro com a API.

magic-link.html

  • Processa os parâmetros do link mágico.
  • Chama a API para validar o OTP e confirmar o e-mail.
  • Exibe o status final ao usuário.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant