Ter uma etapa de autenticação antes do envio de dados para o endpoint é essencial para proteção tanto do usuário como da API. O processo de autenticação valida a identidade do usuário através de um protocolo que envia as credenciais do cliente, solicitando o acesso, para o servidor remoto, utilizando criptografia. O servidor deve então ser capaz de validar corretamente o usuário final.
Essa etapa de autenticação fornece endpoints ao usuário para que seja possível o registro, login, logout e acesso à API - caso a validação seja confirmada. Também permite lidar com as situações de credenciais inválidas.
Serviços inclusos na API de autenticação:
Recursos | Serviços | Endpoints |
---|---|---|
Registrar Usuário | Registro | /authentication/register |
Verificar Token | Token de acesso | /authentication |
Login | Autenticação do Usuário | /authentication/login |
Logout | Logout do Usuário | /authentication/logout |
Atualizar Token | Token Atualizado | /authentication/refresh |
api.tagcenter.io
A função register() recebe como parâmetro RegisterDto e delega a criação do usuário atual para a função usersService.creat(). Retorna o usuário criado ou código de erro caso não tenha sido bem sucedido.
O Endpoint é criado através da rota:
Post /authentication/register
Body:
{
email: string,
name: string,
password: string,
phone_number: string
}
Exemplo:
{
"email": "jomilic588@3dinews.com",
"name": "Test Register",
"password": "123456",
"phone_number": "+12057404135"
}
Retorno do exemplo:
{
"email": "jomilic588@3dinews.com",
"phoneNumber": "+12057404135",
"name": "Test Register",
"id": "115",
"active": false,
"isRegisteredWithGoogle": false,
"isTwoFactorAuthenticationEnabled": false,
"isEmailConfirmed": false,
"isPhoneNumberConfirmed": false
}
Fornece o token de acesso para a autenticação para o usuário. O token de acesso é uma string que permite a confirmação de que as requisições que serão feitas pertencem a uma sessão autorizada. O token fornecido é armazenado em um cookie com httponly setado em True e expira em 24 horas.
Rota utilizada:
Get /authentication
A função getAuthenticatedUser() recebe como parâmetro o email do usuário e a senha e delega a verificação para a função verifyPassword(). Retorna o usuário autorizado ou erro 102.
Rota utilizada:
Post /authentication/login
Body:
{
email: string,
password: string
}
Exemplo:
{
"email": "yourname@domain.com",
"password": "123456"
}
Retorno do exemplo:
{
"id": "116",
"email": "yourname@domain.com",
"phoneNumber": "+12000000000",
"name": "Test Auth",
"active": true,
"isRegisteredWithGoogle": false,
"isTwoFactorAuthenticationEnabled": false,
"isEmailConfirmed": true,
"isPhoneNumberConfirmed": false,
"stripe_customer_id": null,
"user_language": "pt-BR",
"avatar": null
}
Chave | Valor | Descrição |
---|---|---|
string | Email de cadastro do usuário | |
phoneNumber | string | Número de telefone do usuário |
name | string | Nome do usuário |
id | string | Identificador do usuário |
active | boolean | Usuário ativo ou não |
isRegisteredWithGoogle | boolean | Usuário criado por integração com google |
IsTwoFactorAuthenticationEnabled | boolean | Verifica se há autenticação em dois fatores ativa para este usuário |
isEmailConfirmed | boolean | Verifica se o email já foi confirmado |
isPhoneNumberConfirmed | boolean | Verifica se o telefone já foi confirmado |
stripe_customer_id | string | Identificação do usuário para o sistema de cobrança |
user_language | string | Linguagem escolhida pelo usuário |
avatar | string | Url da imagem do avatar do usuário |
Responsável por terminar a sessão do usuário e dissociar o usuário autenticado das próximas requisições feitas pelo cliente.
Rota utilizada:
Post /authentication/logout
Request de um novo token de acesso.
Rota utilizada:
Get /authentication/refresh
Rota utilizada:
Post /authentication/confirm-email
Body:
{
token: string;
}
Exemplo:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5"
}
Retorno do exemplo:
{
"generatedMaps": [],
"raw": [],
"affected": 1
}
A função confirmPhoneNumber() recebe como parâmetro o usedId, o número do telefone e o código de verificação. Envia o código de confirmação via sms para o número de celular registrado do usuário e armazena a userId caso seja aprovado. Se não aprovado, envia o código de erro 103.
Rotas utilizadas:
Contendo os cookies de autenticação e refresh -> inicia o processo enviando o código de confirmação via sms para o número registrado do usuário
Post /sms/initiate-verification
Contendo os cookies de autenticação e refresh
Post /sms/check-verification-code
Body:
{
code: string
}
Exemplo:
{
"code": "809678"
}
Retorno do exemplo:
201 created
Código | Descrição |
---|---|
101 | Something went wrong |
102 | Wrong credentials provided |
100 | User with that email already exists |
201 | The request has succeeded |
401 | Unauthorized |