Sistema de autenticação moderno em Angular que implementa um fluxo de cadastro único com formulário multi-etapas reutilizável, usando Bulma CSS para estilização.
Cadastro Único → Login/Registro → Home → Multi-Step Form
O sistema utiliza uma abordagem de verificação de email única, onde:
- Usuário fornece email
- Sistema verifica existência
- Redireciona para Login ou Registro
- Após autenticação, acessa Home e formulários
- Ponto de entrada único
- Verificação de email
- Roteamento inteligente
- Login: Autenticação de existentes
- Registro: Cadastro de novos
- Home: Dashboard pós-login
- Formulário em etapas
- Campos configuráveis
- Validação por etapa
src/
├── app/
│ ├── components/
│ │ ├── auth/
│ │ │ ├── cadastro-unico/
│ │ │ ├── login/
│ │ │ └── registro/
| | └── forms/
| | | ├── confirmacao-passo/
│ │ │ ├── form-teste/
│ │ │ ├── input-passo/
│ │ │ └── multi-step-form/
│ │ └── home/
│ ├── services/
│ ├── guards/
│ └── models/
// AuthService - Gerenciamento de autenticação
export class AuthService {
private readonly USERS_KEY = 'USERS';
private readonly TOKEN_KEY = 'AUTH_TOKEN';
private readonly TEMP_EMAIL_KEY = 'TEMP_EMAIL';
private readonly LAST_CLEANUP_KEY = 'LAST_CLEANUP';
private readonly ONE_DAY = 24 * 60 * 60 * 1000; // 1 dia em milissegundos
// Métodos principais
login()
register()
logout()
// Limpeza automática
private initAutoCleanup()
private checkAndCleanup()
private clearAllData()
}
// FormService - Gerenciamento do formulário
export class FormService {
private data: any = {};
private stepIndex = 0;
// Métodos principais
nextStep()
previousStep()
updateData()
}# Instalar dependências
npm install
# Iniciar desenvolvimento
ng serve// Definição de campos
export class FormTesteComponent {
fields: DynamicField[] = [
{ label: 'Nome Completo', name: 'nomeCompleto', type: 'text', required: true },
{ label: 'Endereço', name: 'endereco', type: 'text', required: true },
{ label: 'Idade', name: 'idade', type: 'number', required: true },
{ label: 'Gênero', name: 'genero', type: 'select', required: true, options: ['Masculino', 'Feminino', 'Outro'] },
{ label: 'Email', name: 'email', type: 'email', required: true }
];
}
// Implementação
<app-multi-step-form [dynamicFields]="fields"></app-multi-step-form>// Guard de Rotas
export const authGuard: CanActivateFn = (route, state) => {
if (!authService.isAuthenticated) {
return router.navigate(['/auth/login']);
}
return true;
};- Framework: Bulma CSS
- Componentes consistentes
- Layout responsivo
- Inputs arredondados
- Feedback de erro
- Estados de loading
-
Componentização
- Componentes isolados
- Responsabilidades definidas
- Código reutilizável
-
Estado
- Forms reativos
- Observables
- LocalStorage
-
Erros
- Validação completa
- Mensagens amigáveis
- Fallbacks
-
Backend
- API real
- Auth server
- Database
-
Segurança
- JWT
- Refresh tokens
- OAuth
-
Features
- Reset senha
- Verificação email
- Perfil
// Limpar dados
window.auth.clearAllData();
// Ver usuários
console.log(auth.getStoredUsers());Contribua via pull requests ou issues para bugs/melhorias.
Desenvolvido com ❤️ usando Angular e Bulma CSS.