Skip to content

Latest commit

 

History

History
executable file
·
91 lines (64 loc) · 3.42 KB

README.md

File metadata and controls

executable file
·
91 lines (64 loc) · 3.42 KB

Coffee Shop Backend

Getting Started

Installing Dependencies

Python 3.6.0

Follow this Youtube Video or the readme guide on the pyenv repository to easily switch to a different version of python. This project is most compatible with python 3.6.0

Virtual Enviornment

We 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 we 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 we want you to focus on auth, we handle the heavy lift for you in ./src/database/models.py. We 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;

Also set the following eenvironmental variable for Auth0

export AUTH0_DOMAIN='your_auth0_domain'
export API_AUDIENCE='auth0_audience'

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 ./starter_code/backend/udacity-fsnd-udaspicelatte.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 we've included so that we have your proper JWTs during review!

Implement The Server

There are @TODO comments throughout the ./backend/src. We recommend tackling the files in order and from top to bottom:

  1. ./src/auth/auth.py
  2. ./src/api.py