Skip to content

Commit 2b34bd0

Browse files
authored
Merge pull request #14 from Annyv2/master
Update sample to use Centralized Lock
2 parents a1e3792 + 8bba0c6 commit 2b34bd0

6 files changed

Lines changed: 42 additions & 47 deletions

File tree

00-Starter-Seed/.env.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ AUTH0_CLIENT_ID={CLIENT_ID}
22
AUTH0_DOMAIN={DOMAIN}
33
AUTH0_CLIENT_SECRET={CLIENT_SECRET}
44
AUTH0_CALLBACK_URL=http://localhost:3000/callback
5+
API_ID={API_AUDIENCE}

00-Starter-Seed/constants.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
""" Constants file for Auth0's seed project
22
"""
33
ACCESS_TOKEN_KEY = 'access_token'
4+
API_ID = 'API_ID'
45
APP_JSON_KEY = 'application/json'
56
AUTH0_CLIENT_ID = 'AUTH0_CLIENT_ID'
67
AUTH0_CLIENT_SECRET = 'AUTH0_CLIENT_SECRET'

00-Starter-Seed/public/app.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
$(document).ready(function() {
2-
var lock = new Auth0Lock(AUTH0_CLIENT_ID, AUTH0_DOMAIN, {
3-
auth: {
4-
redirectUrl: AUTH0_CALLBACK_URL
5-
}
6-
});
2+
var auth = new auth0.WebAuth({
3+
domain: AUTH0_DOMAIN,
4+
clientID: AUTH0_CLIENT_ID
5+
});
6+
77

88
$('.btn-login').click(function(e) {
99
e.preventDefault();
10-
lock.show();
10+
auth.authorize({
11+
audience: API_AUDIENCE,
12+
scope: 'openid profile',
13+
responseType: 'code',
14+
redirectUri: AUTH0_CALLBACK_URL
15+
});
1116
});
1217
});

00-Starter-Seed/requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
flask
22
dotenv
33
requests
4+
auth0-python

00-Starter-Seed/server.py

Lines changed: 26 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,33 @@
1-
"""Auth0's sample server
1+
"""Python Flask WebApp Auth0 integration example
22
"""
33
from functools import wraps
4-
import os
4+
from os import environ as env, path
5+
import json
56

6-
from dotenv import Dotenv
7+
from auth0.v3.authentication import GetToken
8+
from auth0.v3.authentication import Users
9+
from dotenv import load_dotenv
710
from flask import Flask
811
from flask import redirect
912
from flask import render_template
1013
from flask import request
1114
from flask import send_from_directory
1215
from flask import session
13-
import requests
1416

1517
import constants
1618

17-
# Load Env variables
18-
env = None
19+
load_dotenv(path.join(path.dirname(__file__), ".env"))
20+
API_AUDIENCE = env[constants.API_ID]
21+
AUTH0_CALLBACK_URL = env[constants.AUTH0_CALLBACK_URL]
22+
AUTH0_CLIENT_ID = env[constants.AUTH0_CLIENT_ID]
23+
AUTH0_CLIENT_SECRET = env[constants.AUTH0_CLIENT_SECRET]
24+
AUTH0_DOMAIN = env[constants.AUTH0_DOMAIN]
1925

20-
try:
21-
env = Dotenv('./.env')
22-
except IOError:
23-
env = os.environ
26+
APP = Flask(__name__, static_url_path='')
27+
APP.secret_key = constants.SECRET_KEY
28+
APP.debug = True
2429

25-
app = Flask(__name__, static_url_path='')
26-
app.secret_key = constants.SECRET_KEY
27-
app.debug = True
2830

29-
30-
# Requires authentication decorator
3131
def requires_auth(f):
3232
@wraps(f)
3333
def decorated(*args, **kwargs):
@@ -38,47 +38,33 @@ def decorated(*args, **kwargs):
3838

3939

4040
# Controllers API
41-
@app.route('/')
41+
@APP.route('/')
4242
def home():
4343
return render_template('home.html', env=env)
4444

4545

46-
@app.route('/dashboard')
46+
@APP.route('/dashboard')
4747
@requires_auth
4848
def dashboard():
4949
return render_template('dashboard.html',
5050
user=session[constants.PROFILE_KEY])
5151

5252

53-
@app.route('/public/<path:filename>')
53+
@APP.route('/public/<path:filename>')
5454
def static_files(filename):
5555
return send_from_directory('./public', filename)
5656

5757

58-
@app.route('/callback')
58+
@APP.route('/callback')
5959
def callback_handling():
6060
code = request.args.get(constants.CODE_KEY)
61-
json_header = {constants.CONTENT_TYPE_KEY: constants.APP_JSON_KEY}
62-
token_url = 'https://{auth0_domain}/oauth/token'.format(
63-
auth0_domain=env[constants.AUTH0_DOMAIN])
64-
token_payload = {
65-
constants.CLIENT_ID_KEY: env[constants.AUTH0_CLIENT_ID],
66-
constants.CLIENT_SECRET_KEY: env[constants.AUTH0_CLIENT_SECRET],
67-
constants.REDIRECT_URI_KEY: env[constants.AUTH0_CALLBACK_URL],
68-
constants.CODE_KEY: code,
69-
constants.GRANT_TYPE_KEY: constants.AUTHORIZATION_CODE_KEY
70-
}
71-
72-
token_info = requests.post(token_url, json=token_payload,
73-
headers=json_header).json()
74-
75-
user_url = 'https://{auth0_domain}/userinfo?access_token={access_token}'\
76-
.format(auth0_domain=env[constants.AUTH0_DOMAIN],
77-
access_token=token_info[constants.ACCESS_TOKEN_KEY])
78-
79-
user_info = requests.get(user_url).json()
80-
session[constants.PROFILE_KEY] = user_info
61+
get_token = GetToken(AUTH0_DOMAIN)
62+
auth0_users = Users(AUTH0_DOMAIN)
63+
token = get_token.authorization_code(AUTH0_CLIENT_ID,
64+
AUTH0_CLIENT_SECRET, code, AUTH0_CALLBACK_URL)
65+
user_info = auth0_users.userinfo(token['access_token'])
66+
session[constants.PROFILE_KEY] = json.loads(user_info)
8167
return redirect('/dashboard')
8268

8369
if __name__ == "__main__":
84-
app.run(host='0.0.0.0', port=os.environ.get('PORT', 3000))
70+
APP.run(host='0.0.0.0', port=env.get('PORT', 3000))

00-Starter-Seed/templates/home.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<html>
22
<head>
33
<script src="http://code.jquery.com/jquery-3.1.0.min.js" type="text/javascript"></script>
4-
<script src="https://cdn.auth0.com/js/lock/10.5/lock.min.js"></script>
4+
<script src="https://cdn.auth0.com/js/auth0/8.6.0/auth0.min.js"></script>
55

66
<script type="text/javascript" src="//use.typekit.net/iws6ohy.js"></script>
77
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
@@ -16,6 +16,7 @@
1616
var AUTH0_CLIENT_ID = '{{env.AUTH0_CLIENT_ID}}';
1717
var AUTH0_DOMAIN = '{{env.AUTH0_DOMAIN}}';
1818
var AUTH0_CALLBACK_URL = '{{env.AUTH0_CALLBACK_URL if env.AUTH0_CALLBACK_URL else "http://localhost:3000/callback" }}';
19+
var API_AUDIENCE = '{{env.API_ID}}';
1920
</script>
2021
<script src="/public/app.js"> </script>
2122
<link href="/public/app.css" rel="stylesheet">

0 commit comments

Comments
 (0)