Giter VIP home page Giter VIP logo

pitangagile-desafio's Introduction

Heroku

link para a aplicação: https://pitang-desafio-tiago.herokuapp.com/

API RESTful de usuários + login

Criar aplicação que exponha uma API RESTful de criação de usuários com login.

A aplicação deve aceitar e responder apenas em JSON.

Nós esperamos que as mensagens de erro tenham o seguinte formato:

    {"message": "Error message", "errorCode": 123}

/signup

  • Essa rota espera um usuário com os campos abaixo:
    • firstName [String]
    • lastName [String]
    • email [String]
    • password [String]
    • phones [List]
      • number [Number]
      • area_code [Number]
      • country_code [String]
  • Segue abaixo um exemplo do formato:
    {
        "firstName": "Hello",
        "lastName": "World",
        "email": "[email protected]"
        "password": "hunter2",
        "phones": [
            {
                "number": 988887888,
                "area_code": 81,
                "country_code": "+55"
            }
        ]
    }

Obs: O id do usuário pode ser um sequencial gerado pelo banco ou um id único.

  • Responder o código de status HTTP apropriado

  • Em caso de sucesso você deve retornar:

    • token: token de acesso da API (JWT) com informações do usuário cadastrado;
  • Em caso de erro:

    • E-mail existente [retornar um erro com a mensagem "E-mail already exists"];
    • Campos inválidos [retornar um erro com a mensagem "Invalid fields"];
    • Campos não preenchidos [retornar um erro com a mensagem "Missing fields"];

/signin

  • Essa rota espera um objeto com os campos abaixo:

    • email [String]
    • password [String]
  • Em caso de sucesso você deve retornar:

    • token: token de acesso da API (JWT) com informaçÕes do usuário logado;
  • Em caso de erro:

    • E-mail inexistente ou senha errada [retornar um erro com a mensagem "Invalid e-mail or password"];
    • Campos não preenchidos [retornar um erro com a mensagem "Missing fields"];

/me

  • Essa rota espera o token da api (via header):

    • Authorization [JWT Token]
  • Em caso de sucesso você deve retornar:

    • firstName: Nome do usuário;
    • lastName: Sobrenome do usuário;
    • email: E-mail do usuário;
    • phones: Lista de telefones do usuário;
    • created_at: Data da criação do usuário;
    • last_login: Data da última vez que o usuário realizou login;
  • Em caso de erro:

    • Token não enviado [retornar um erro com a mensagem "Unauthorized"];
    • Token expirado [retornar um erro com a mensagem "Unauthorized - invalid session"];

Requisitos

  • Framework Django.
  • Banco de dados em memória, como SQLite.
  • Persistência com Django ORM ou SQLAlchemy.
  • Disponibilizar a API rodando em algum host (Heroku, AWS, Digital Ocean, etc).
  • Servidor deve estar embutido na aplicação (Gunicorn ou uWSGI)
  • Utiliziar no mínimo Python 3
  • Testes unitários

Requisitos desejáveis

  • JWT como token
  • Senha deve ser criptografada

pitangagile-desafio's People

Contributors

tiagolisboa avatar

Watchers

James Cloos avatar  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.