Skip to content

Latest commit

 

History

History
executable file
·
82 lines (56 loc) · 3.18 KB

README.md

File metadata and controls

executable file
·
82 lines (56 loc) · 3.18 KB

Coffee Shop Backend

Getting Started

Installing Dependencies

Python 3.7

Follow instructions to install the latest version of python for your platform in the python docs

Virtual Enviornment

I recommend working within a virtual environment whenever using Python for projects. This keeps your dependencies for each project separate and organaized. Instructions for setting up a virual enviornment for your platform can be found in the python docs

PIP Dependencies

Once you have your virtual environment setup and running, install dependencies by naviging to the /backend directory and running:

pip install -r requirements.txt

This will install all of the required packages I selected within the requirements.txt file.

Key Dependencies
  • Flask is a lightweight backend microservices framework. Flask is required to handle requests and responses.

  • SQLAlchemy and Flask-SQLAlchemy are libraries to handle the lightweight sqlite database. Since I want you to focus on auth, I handle the heavy lift for you in ./src/database/models.py. I recommend skimming this code first so you know how to interface with the Drink model.

  • jose JavaScript Object Signing and Encryption for JWTs. Useful for encoding, decoding, and verifying JWTS.

Running the server

From within the ./src directory first ensure you are working using your created virtual environment.

Each time you open a new terminal session, run:

export FLASK_APP=api.py;

To run the server, execute:

flask run --reload

The --reload flag will detect file changes and restart the server automatically.

Tasks

Setup Auth0

  1. Create a new Auth0 Account
  2. Select a unique tenant domain
  3. Create a new, single page web application
  4. Create a new API
    • in API Settings:
      • Enable RBAC
      • Enable Add Permissions in the Access Token
  5. Create new API permissions:
    • get:drinks-detail
    • post:drinks
    • patch:drinks
    • delete:drinks
  6. Create new roles for:
    • Barista
      • can get:drinks-detail
    • Manager
      • can perform all actions
  7. Test your endpoints with Postman.
    • Register 2 users - assign the Barista role to one and Manager role to the other.
    • Sign into each account and make note of the JWT.
    • Import the postman collection ./backend/coffee-shop-api.postman_collection.json
    • Right-clicking the collection folder for barista and manager, navigate to the authorization tab, and including the JWT in the token field (you should have noted these JWTs).
    • Run the collection and correct any errors.
    • Export the collection overwriting the one I've included so that I have your proper JWTs during review!

Postman Integration Test

Video