Skip to content

aureliotechnology/ms-user-node

Repository files navigation

NPM Version Package License NPM Downloads CircleCI Coverage Discord Backers on Open Collective Sponsors on Open Collective Support us

Intalação

$ docker-compose up -d

Aplicações rodando

Ele vai rodar 4 conteiners:

  • user
  • logger
  • auth
  • postgres

Descrição

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

Testes

# unit tests
$ npm run test

# e2e tests
$ npm run test:e2e

# test coverage
$ npm run test:cov

MIT licensed.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published