Giter Club home page Giter Club logo

exercicios-backend-autenticacao-criptografia-solucao's Introduction

Exercício 01

Criação de API com autenticação

Você acaba de receber uma proposta como freelancer para construir uma API que irá catalogar Pokemons. Entretanto, não se trata de uma simples API, pois ela possuirá autenticação para que cada usuario logado possa catalogar seus Pokemons.

Sendo assim, vamos aos requisitos proposto pelo contratante.

1 - Deverá existir um banco de dados chamado catalogo_pokemons com as tabelas descritas abaixo e todo código de criação das tabelas deverá se colocado no arquivo dump.sql

a) Tabela usuarios com os campos:

  • id - identificador único do usuário como chave primaria e auto incremento;
  • nome - (obrigatório)
  • email - (obrigatório e único)
  • senha - (obrigatório)

b) Tabela pokemons com os campos

  • id - identificador único do pokemon como chave primaria e auto incremento;
  • usuario_id - (obrigatório)
  • nome - (obrigatório)
  • habilidades - (obrigatótio)
  • imagem
  • apelido

2 - Para a entidade usuarios deverá ser implementado as seguintes funcionalidades.

a) Cadastro de usuário

  • A senha do usuário deverá ser criptografada usando a biblioteca bcrypt antes de salvar o cadastro.

b) Login de usuário

  • Validar as credenciais do usuário usando a biblioteca bcrypt.
  • Gerar o token de autenticação com a biblioteca jsonwebtoken.

3 - Para a entidade pokemons deverá ser implementado as seguintes funcionalidades.

a) Cadastro do pokemons

b) Atualização apenas do apelido do pokemon

c) Listagem completa dos pokemons

d) Listagem de apenas um pokemon filtrado pelo seu id

e) Exclusão do pokemon

É obrigatório para as funcionalidades da entidade pokemons:

  • Receber o token do header da requisição (authorization) no formato Bearer Token e validar o usuário logado em todos os endpoints.
  • O campo usuario_id não deve ser capturado do body da requisição. Deve ser obtido do token recebido no header.
  • No cadastro de pokemon, o campo habilidades deverá receber apenas uma string de habilidades separadas por vírgulas.
  • Na listagem de pokemons o campo habilidades deverá retornar um array de habilidades.

Obs.: É preciso realizar todas as validações necessárias para evitar erros no banco de dados

Exemplo do body para cadastro do pokemon:

{
    "nome": "Pikachu",
    "apelido": "pikachu",
    "habilidades": "static, lightning-rod",
    "imagem": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/other/dream-world/25.svg"
}

Exemplo de retorno na listagem de pokemons:

[
    {
        "id": 1,
        "usuario": "Nome do usuário responsável"
        "nome": "Pikachu",
        "apelido": "pikachu",
        "habilidades": ["static", "lightning-rod"],
        "imagem": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/other/dream-world/25.svg"
    },
    {
        "id": 2,
        "usuario": "Nome do usuário responsável"
        "nome": "Bulbasaur",
        "apelido": "bulbasaur",
        "habilidades": ["overgrow", "chlorophyll"],
        "imagem": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/other/dream-world/1.svg"
    }
]

Preencha a checklist para finalizar o exercício:

  • Resolver o exercício revendo a aula se necessário
  • Adicionar as mudanças aos commits (git add . para adicionar todos os arquivos ou git add nome_do_arquivo para adicionar um arquivo específico)
  • Commitar a cada mudança significativa ou na finalização do exercício (git commit -m "Mensagem do commit")
  • Pushar os commits no seu fork na origem (git push origin nome-da-branch)
tags: exercícios lógica banco de dados sql postgres

exercicios-backend-autenticacao-criptografia-solucao's People

Contributors

maxsonferovante avatar samuelandrade18-05 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.