Fluxo de Registro

Fluxo de Registro

CASO #REG-2026 · INVESTIGAÇÃO DE FLUXO
Interno
Analisado

Fluxo de Registro de Usuário

Mapeamento completo — do formulário ao onboarding
👤
Usuário
Ação do cliente
🖥
Frontend
vtp-pwa
⚙️
Backend
vtp-webservices
Background
Jobs assíncronos
3 integrações CRM!
verificar throttle
1 Pontos de Entrada
Entrada
Acessa tela de registro

Usuário abre o app ou é direcionado para cadastro

Formulário
Formulário de Registro
registration.form.component.ts
  • Nome required
  • Email required · unique
  • Senha required
  • Telefone internacional opcional
  • Imagem de perfil opcional
  • Voucher / Giftcard opcional · min 16 chars
API Externa
Registro via API Externa
POST /v1/external/appusers
  • AppuserExternalController@store
  • Auth: auth:apiexternal
  • Throttle: 300/min

Integrações de terceiros criam usuários via API key

POST /user
▼ Convergência — Mesma Lógica ▼
2 Validação
Validação
StoreAppuserRequest
Requests/Appusers/StoreAppuserRequest.php
  • Nome, email (unique), senha — obrigatórios
  • ValidatesAppuserData trait verifica conteúdo inválido
  • Valida voucher se informado
⚑ vtp_config('register') — deve estar ativo
3 Criação do Usuário
Action
CreateAppuserAction::execute()
Actions/Appusers/CreateAppuserAction.php
  • Normaliza email → lowercase
  • Formata telefone → E164 via libphonenumber
  • Detecta país pelo DDD internacional
  • Gera senha 6 dígitos se não fornecida
  • Salva no banco com SAVEPOINT
  • Cache da senha plain por 60s
4 Pós-criação — Síncrono
Síncrono
StoreAppuserController
Controllers/Appusers/StoreAppuserController.php
  • Aplica giftcard/voucher se válido
  • Inicializa stats do perfil (verifySums)
  • Gera JWT API token
⚑ vtp_config('email_verification')
  • Envia VerifyApiEmail (link válido 365 dias)
5 Eventos Assíncronos — Appuser::created
dispatch async
Event
Appuser::created boot
Models/Appuser.php :255
  • Dispara AppuserIntegrationJob
  • Dispara ProcessPerfil
  • Dispara PandaVideoWatermarkUserJob
Async
Marketing — CRMs
Jobs/AppuserIntegrationJob.php

Evento: "VTP_LEAD"

  • RD Station — conversão via API
  • Active Campaign — lead sync
  • Keap — lead sync

Cada CRM condicionado a config_vtp('*_apikey')

Async
Processamento de Perfil
  • ProcessPerfil — inicializa stats
  • PandaVideoWatermarkUserJob — gera watermark
6 Resposta e Auto-Login
AppuserResource + token
Resultado
Redirecionado para Produtos

Usuário já está logado e vê a lista de produtos disponíveis

Resposta
Auto-login + Navegação
general.service.ts
  • Recebe AppuserResource
  • Toast de sucesso
  • Login automático com email/senha
  • Busca dados do usuário logado
  • Navega para /products
Return
AppuserResource
Resources/AppuserResource.php
  • Dados completos do usuário
  • api_token (JWT)
  • Produtos disponíveis sincronizados
Legenda
Usuário
Frontend
Backend
Background Jobs
Chamada síncrona
Dispatch assíncrono
⚑ config Condicionado a config
— página 1 de 1 —