$ docker-compose up -d
Ele vai rodar 4 conteiners:
- user
- logger
- auth
- postgres
Nest Foi usado para desenvolver esse sistema de contro de usuários e login. Inicialmente temos as funções basicas atendidas:
1 - Cadastro com os campos:
{
"name": "string",
"phone": "Telefone válido",
"email": "Email válido",
"pass": "string",
"pass_confirmation": "string",
}
Nos campos acima seguimos as seguintes validaçãos
- Telefone
- - DDD não pode começar com
- - O terceiro digito obrigatóriamente será um 9
- - O quarto digito obrigatóriamente será diferente de 0
- - Terá 11 campos ao todo
- Pass
- - Será maior que 8 digitos
- - Terá pelo menos 1 caracter especial
- Pass Confirmation
- - Deve ser igual ao Pass
Ao se cadastrar você recebe um e-mail para confirmar sua senha. Como não temos um dominio definido, você recebera um e-mail com o código e pode usar na rota de confirmação
- Como informado na instalação você precisa configurar as variáveis referente as credenciais da AWS e usar um e-mnail verificado na SES para que a o AWS SDK SANDBOX funcione.
{
"type": "PASS | EMAIL",
"email": "email@login.com"
}
2 - Solicitar um novo código de verificação, esse end point funciona tanto para reenvio do token de confirmação do email, quanto para solicitar uma recuperação de senha, os 2 vão ativar o campo de verificação do usuário e gerar um código.
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_EMAIL_SENDER=
3 - Os campos email e telefone são chaves unicas no banco de dados, dessa forma não é possível cadastrar mais de um usuário com esses dados.
4 - Todas as rotas acima funcionam na porta 3000 e geram um resultado especifo de erro para cada caracterisica não cumprida.
5 - Na autenticação está sendo feita uma simples comparação com os dados inseridos no login e os dados do banco
- bycrypt: a primeira alternativa para criptografia porém não estava funcionando bem junto com o nest para comparar a senha após o has.
- crypto: as principais funções de decriptografia falharam.
- Caso os dados não sejam iguais o login falha
- Caso o usuário não esteja ativo por falta de verificação de email o erro será explicito, o redirecionamento fica no fronte.
6 - Para inserir uma nova senha basta solicitar um novo código com explicado no tópico 1 e acessar a rota de reset de senha com as seguintes informações:
{
"pass": "string",
"pass_confirmation": "string",
"code": "user.verification",
"email": "email@email.com"
}
- As regras de validação dos campos seguem as mesmas do cadastro.
- Caso o email não seja encontrado retornará um 404
# unit tests
$ npm run test
# e2e tests
$ npm run test:e2e
# test coverage
$ npm run test:cov