Neste desafio você deve desenvolver uma API de autenticação utilizando o .NET Core 6 Minimal APIs.
$ dotnet restore
$ dotnet run
A rota deve receber um username
, password
e name
dentro do Body da requisição e criar um novo usuário dentro do banco de dados utilizando os dados recebidos.
{
"username": "fulano123",
"password": "12345678",
"name": "Fulano de Tal"
}
- Receber
username
,password
ename
. - Cria a base do usuário no banco de dados.
- Criar usuário no banco de dados.
-
isAdmin
deve serfalse
por padrão. - Rota deve retornar o usuário criado na requisição
- Não deve conter
isAdmin
- Não deve conter
password
- Não deve conter
- Validar dados recebidos
-
username
deve ter no mínimo 5 dígitos -
password
deve ter no mínimo 8 dígitos -
name
deve ter no mínimo 3 dígitos
-
- Requisições inválidas devem retornar erro padronizado
- Status de resposta deve ser
400
-
username
existente deve retornar status400
- Status de resposta deve ser
- Criptografar senha do usuário antes de salvar no banco de dados
Modelo de Usuário para Banco de dados
public record User
{
public Guid id { get; init; }
public string username { get; init; } = default!;
public string password { get; init; } = default!;
public string name { get; init; } = default!;
public Boolean isAdmin { get; init; }
}
Modelo de Requisição Bem Sucedida
{
"id": "f1d5e317-cfbb-4111-b38b-819b7c4c9cf8",
"username": "fulano123",
"name": "Fulano de Tal"
}
Modelo de Requisição com Erro
{
"title": "Bad Request",
"status": 400,
"detail": "Usuario já registrado"
}
A rota deve receber um username
e password
dentro do Body da requisição e validar os dados, retornando um Token JWT caso estejam válidos.
{
"username": "fulano123",
"password": "12345678"
}
- Receber
username
,password
- Validar dados recebidos
-
username
deve ter no mínimo 5 dígitos -
password
deve ter no mínimo 8 dígitos
-
- Encontrar usuário no Banco de Dados
- Verificar
password
da requisição com Hash no Banco de Dados - Requisições inválidas devem retornar erro padronizado
- Status de resposta deve ser
400
-
username
não existente deve retornar status400
- Status de resposta deve ser
- Requisições válidas devem retornar Token JWT para o cliente
- Token deve conter informações do usuário
Modelo de Requisição Bem Sucedida
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiQW5kcmUgU2FtcGFpbyIsInJvbGUiOiJVc2VyIiwibmFtZWlkIjoiZDRjZDA4MzUtYTFkMy00MTAxLWE2YjEtZTIyZWM0YzUxNDE1IiwibmJmIjoxNjQ3NTI2ODQ4LCJleHAiOjE2NDc1MzQwNDgsImlhdCI6MTY0NzUyNjg0OH0.ar2hJrwY3zG-g7FbupjvgGtLfjLoZo7LQ88epA9VW0k"
Esse desafio deve ser entregue a partir da plataforma Edx, enviado em formato de repositório de código, plataforma de edição de código online ou zip. Lembre-se de manter o arquivo público antes de compartilhar com o instrutor.
Feito com 💜 por Andre Sampaio