Skip to content

Commit a5188db

Browse files
awolfdenAdam Wolfman
andauthored
Feature/update style with black (#11)
* Add top-level python flask env for Semaphore * Update setup.py config * Update setup.py file for Semaphore dependencies * Update setup.py * Update setup.py file * Update setup.py file * Make change to trigger PR refresh Co-authored-by: Adam Wolfman <[email protected]>
1 parent a2883e3 commit a5188db

File tree

5 files changed

+110
-99
lines changed
  • python-flask-admin-portal-example
  • python-flask-directory-sync-example
  • python-flask-mfa-example
  • python-flask-sso-example

5 files changed

+110
-99
lines changed
Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import os
22

3-
from flask import (Flask, redirect, render_template, request, url_for)
3+
from flask import Flask, redirect, render_template, request, url_for
44
import workos
55
from workos import client as workos_client
66
from workos import portal
@@ -11,46 +11,47 @@
1111
app = Flask(__name__)
1212

1313
# WorkOS Setup
14-
workos.api_key = os.getenv('WORKOS_API_KEY')
15-
workos.project_id = os.getenv('WORKOS_CLIENT_ID')
16-
workos.base_api_url = 'http://localhost:7000/' if DEBUG else workos.base_api_url
14+
workos.api_key = os.getenv("WORKOS_API_KEY")
15+
workos.project_id = os.getenv("WORKOS_CLIENT_ID")
16+
workos.base_api_url = "http://localhost:7000/" if DEBUG else workos.base_api_url
1717

18-
@app.route('/')
18+
19+
@app.route("/")
1920
def index():
20-
return render_template('index.html')
21+
return render_template("index.html")
22+
2123

22-
@app.route('/provision_enterprise', methods=['POST'])
24+
@app.route("/provision_enterprise", methods=["POST"])
2325
def provision_enterprise():
2426
# Create global variable for org_id
2527
global org_id
26-
organization_name = request.form['org']
27-
organization_domains = request.form['domain'].split()
28+
organization_name = request.form["org"]
29+
organization_domains = request.form["domain"].split()
2830

2931
# Check if a matching domain already exists and set global org_id if there is a match
3032
orgs = workos_client.organizations.list_organizations(domains=organization_domains)
3133
if len(orgs["data"]) > 0:
32-
org_id = orgs['data'][0]['id']
34+
org_id = orgs["data"][0]["id"]
3335

3436
# Otherwise create a new Organization and set the global org_id
35-
else:
36-
organization = workos_client.organizations.create_organization({
37-
'name': organization_name,
38-
'domains': organization_domains
39-
})
40-
org_id = organization['id']
37+
else:
38+
organization = workos_client.organizations.create_organization(
39+
{"name": organization_name, "domains": organization_domains}
40+
)
41+
org_id = organization["id"]
42+
43+
return render_template("org_logged_in.html")
4144

42-
return render_template('org_logged_in.html')
4345

44-
@app.route('/sso_admin_portal', methods=['GET', 'POST'])
46+
@app.route("/sso_admin_portal", methods=["GET", "POST"])
4547
def sso_admin_portal():
46-
portal_link = workos_client.portal.generate_link(
47-
organization=org_id, intent='sso'
48-
)
49-
return redirect(portal_link['link'])
48+
portal_link = workos_client.portal.generate_link(organization=org_id, intent="sso")
49+
return redirect(portal_link["link"])
50+
5051

51-
@app.route('/dsync_admin_portal', methods=['GET', 'POST'])
52+
@app.route("/dsync_admin_portal", methods=["GET", "POST"])
5253
def dsync_admin_portal():
5354
portal_link = workos_client.portal.generate_link(
54-
organization=org_id, intent='dsync'
55+
organization=org_id, intent="dsync"
5556
)
56-
return redirect(portal_link['link'])
57+
return redirect(portal_link["link"])
Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,73 @@
11
import os
2-
from flask import (Flask, render_template, request)
2+
from flask import Flask, render_template, request
33
import workos
44
from workos import client as workos_client
5-
from flask_socketio import (SocketIO, emit)
5+
from flask_socketio import SocketIO, emit
66
import json
77

88

99
DEBUG = False
1010
app = Flask(__name__)
1111

1212

13-
app.config['SECRET_KEY'] = 'secret!'
13+
app.config["SECRET_KEY"] = "secret!"
1414
socketio = SocketIO(app)
1515

16-
if __name__ == '__main__':
16+
if __name__ == "__main__":
1717
socketio.run(app)
1818

19-
workos.api_key = os.getenv('WORKOS_API_KEY')
20-
workos.base_api_url = 'http://localhost:5000/' if DEBUG else workos.base_api_url
21-
directory_id = os.getenv('DIRECTORY_ID')
19+
workos.api_key = os.getenv("WORKOS_API_KEY")
20+
workos.base_api_url = "http://localhost:5000/" if DEBUG else workos.base_api_url
21+
directory_id = os.getenv("DIRECTORY_ID")
2222

23-
@app.route('/')
23+
24+
@app.route("/")
2425
def home():
2526
directories = workos.client.directory_sync.list_directories()
2627
print(directories)
2728
directoryNames = []
28-
for i in directories['data']:
29-
directoryNames.append(i['name'])
29+
for i in directories["data"]:
30+
directoryNames.append(i["name"])
3031
print(directoryNames)
31-
return render_template('home.html', directories=directories)
32+
return render_template("home.html", directories=directories)
33+
3234

33-
@app.route('/directory')
35+
@app.route("/directory")
3436
def directory():
35-
directory_id = request.args.get('id')
37+
directory_id = request.args.get("id")
3638
print(directory_id)
3739
directory = workos.client.directory_sync.get_directory(directory_id)
3840
print(directory)
39-
return render_template('directory.html', directory=directory, id=directory['id'])
41+
return render_template("directory.html", directory=directory, id=directory["id"])
4042

41-
@app.route('/users')
43+
44+
@app.route("/users")
4245
def directory_users():
43-
directory_id = request.args.get('id')
46+
directory_id = request.args.get("id")
4447
users = workos_client.directory_sync.list_users(directory=directory_id)
45-
return render_template('users.html', users=users)
48+
return render_template("users.html", users=users)
4649

4750

48-
@app.route('/groups')
51+
@app.route("/groups")
4952
def directory_groups():
50-
directory_id = request.args.get('id')
53+
directory_id = request.args.get("id")
5154
groups = workos_client.directory_sync.list_groups(directory=directory_id)
5255

53-
return render_template('groups.html', groups=groups)
56+
return render_template("groups.html", groups=groups)
5457

5558

56-
@app.route('/webhooks', methods=['GET', 'POST'])
59+
@app.route("/webhooks", methods=["GET", "POST"])
5760
def webhooks():
5861
print(request)
5962
if request.data:
6063
payload = request.get_data()
61-
sig_header = request.headers['WorkOS-Signature']
64+
sig_header = request.headers["WorkOS-Signature"]
6265
response = workos_client.webhooks.verify_event(
63-
payload = payload,
64-
sig_header = sig_header,
65-
secret = os.getenv('WEBHOOKS_SECRET')
66+
payload=payload, sig_header=sig_header, secret=os.getenv("WEBHOOKS_SECRET")
6667
)
67-
68+
6869
message = json.dumps(response)
69-
socketio.emit('webhook_received', message)
70+
socketio.emit("webhook_received", message)
7071

7172
# Return a 200 to prevent retries based on validation
72-
return render_template('webhooks.html')
73+
return render_template("webhooks.html")
Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,56 @@
11
import os
2-
from flask import (Flask, redirect, render_template, request, url_for)
2+
from flask import Flask, redirect, render_template, request, url_for
33
import workos
44
from workos import client as workos_client
5-
# Flask Setup
5+
6+
# Flask Setup
67
DEBUG = False
78
app = Flask(__name__)
89

910
# WorkOS Setup
10-
workos.api_key = os.getenv('WORKOS_API_KEY')
11-
workos.project_id = os.getenv('WORKOS_CLIENT_ID')
12-
workos.base_api_url = 'http://localhost:5000/' if DEBUG else workos.base_api_url
11+
workos.api_key = os.getenv("WORKOS_API_KEY")
12+
workos.project_id = os.getenv("WORKOS_CLIENT_ID")
13+
workos.base_api_url = "http://localhost:5000/" if DEBUG else workos.base_api_url
14+
1315

1416
@app.route("/")
1517
def hello_world():
16-
return render_template('login.html')
18+
return render_template("login.html")
1719

1820

19-
@app.route('/callback')
21+
@app.route("/callback")
2022
def callback():
21-
code = request.args.get('code')
23+
code = request.args.get("code")
2224
profile_and_token = workos_client.sso.get_profile_and_token(code)
2325

2426
# Use the information in `profile` for further business logic.
2527
profile = profile_and_token.profile
2628

27-
return redirect('/')
29+
return redirect("/")
2830

2931

30-
@app.route('/passwordless_auth', methods=["POST"])
32+
@app.route("/passwordless_auth", methods=["POST"])
3133
def passwordless_auth():
32-
email = request.form['email']
34+
email = request.form["email"]
3335

3436
session = workos_client.passwordless.create_session(
35-
{'email': email, 'type': 'MagicLink'}
37+
{"email": email, "type": "MagicLink"}
3638
)
3739

3840
# Send a custom email using your own service
39-
print(email, session['link'])
41+
print(email, session["link"])
4042

4143
# Finally, redirect to a "Check your email" page
42-
return render_template('serve_magic_link.html', email=email, magic_link=session['link'])
44+
return render_template(
45+
"serve_magic_link.html", email=email, magic_link=session["link"]
46+
)
4347

4448

45-
@app.route('/success')
49+
@app.route("/success")
4650
def success():
47-
code = request.args.get('code')
51+
code = request.args.get("code")
4852
profile = workos.client.sso.get_profile_and_token(code)
4953
p_profile = profile.to_dict()
50-
raw_profile = p_profile['profile']
54+
raw_profile = p_profile["profile"]
5155

52-
return render_template('success.html', raw_profile=raw_profile)
56+
return render_template("success.html", raw_profile=raw_profile)

python-flask-mfa-example/app.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
def home():
2121
if session.get("factor_list") == None:
2222
session["factor_list"] = []
23-
session["current_factor_qr"] = ''
24-
session["phone_number"] = ''
23+
session["current_factor_qr"] = ""
24+
session["phone_number"] = ""
2525

2626
if session["factor_list"] != None:
2727
return render_template("list_factors.html", factors=session["factor_list"])
@@ -56,7 +56,7 @@ def enroll_factor():
5656
)
5757
print(new_factor)
5858
session["factor_list"].append(new_factor)
59-
print(session['factor_list'])
59+
print(session["factor_list"])
6060
session.modified = True
6161
return redirect("/")
6262

python-flask-sso-example/app.py

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,64 @@
11
import os
22

3-
from flask import (Flask, session, redirect, render_template, request, url_for)
3+
from flask import Flask, session, redirect, render_template, request, url_for
44
import workos
55

66

77
# Flask Setup
88
DEBUG = False
99
app = Flask(__name__)
10-
app.secret_key = os.getenv('APP_SECRET_KEY')
10+
app.secret_key = os.getenv("APP_SECRET_KEY")
1111

1212
# WorkOS Setup
1313

14-
workos.api_key = os.getenv('WORKOS_API_KEY')
15-
workos.project_id = os.getenv('WORKOS_CLIENT_ID')
16-
workos.base_api_url = 'http://localhost:7000/' if DEBUG else workos.base_api_url
14+
workos.api_key = os.getenv("WORKOS_API_KEY")
15+
workos.project_id = os.getenv("WORKOS_CLIENT_ID")
16+
workos.base_api_url = "http://localhost:7000/" if DEBUG else workos.base_api_url
1717

1818
# Enter Connection ID here
1919

20-
CUSTOMER_CONNECTION_ID = 'xxx'
20+
CUSTOMER_CONNECTION_ID = "xxx"
2121

2222

23-
@app.route('/')
23+
@app.route("/")
2424
def login():
2525
if session:
26-
return render_template('login_successful.html', first_name=session['first_name'], raw_profile=session['raw_profile'])
26+
return render_template(
27+
"login_successful.html",
28+
first_name=session["first_name"],
29+
raw_profile=session["raw_profile"],
30+
)
2731
else:
28-
return render_template('login.html')
32+
return render_template("login.html")
2933

30-
@app.route('/auth')
34+
35+
@app.route("/auth")
3136
def auth():
3237

3338
authorization_url = workos.client.sso.get_authorization_url(
34-
redirect_uri = url_for('auth_callback', _external=True),
35-
state = {},
36-
connection = CUSTOMER_CONNECTION_ID
39+
redirect_uri=url_for("auth_callback", _external=True),
40+
state={},
41+
connection=CUSTOMER_CONNECTION_ID,
3742
)
3843

3944
return redirect(authorization_url)
40-
4145

42-
@app.route('/auth/callback')
46+
47+
@app.route("/auth/callback")
4348
def auth_callback():
44-
code = request.args.get('code')
49+
code = request.args.get("code")
4550
profile = workos.client.sso.get_profile_and_token(code)
4651
p_profile = profile.to_dict()
47-
session['first_name'] = p_profile['profile']['first_name']
48-
session['raw_profile'] = p_profile['profile']
49-
session['session_id'] = p_profile['profile']['id']
50-
print('session', session)
51-
return redirect('/')
52-
53-
54-
@app.route('/logout')
52+
session["first_name"] = p_profile["profile"]["first_name"]
53+
session["raw_profile"] = p_profile["profile"]
54+
session["session_id"] = p_profile["profile"]["id"]
55+
print("session", session)
56+
return redirect("/")
57+
58+
59+
@app.route("/logout")
5560
def logout():
5661
# remove the username from the session if it is there
5762
session.clear()
5863
print(session)
59-
return redirect('/')
64+
return redirect("/")

0 commit comments

Comments
 (0)