From 2362d55682662b8c7766f76bedfb6b4f0c045918 Mon Sep 17 00:00:00 2001 From: Mitchell Moore <mmoo97@uab.edu> Date: Wed, 20 May 2020 09:09:32 -0500 Subject: [PATCH] Add flask_sso functions --- app/__init__.py | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index b9a23d5..a34c109 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -8,30 +8,33 @@ import vars import uuid from flask import Flask, redirect, url_for, request, render_template, flash, session from flask_bootstrap import Bootstrap -import random +from flask_sso import SSO def create_app(config_name): app = Flask(__name__) # initialization of the flask app Bootstrap(app) # allowing app to use bootstrap - @app.route('/', methods=['GET', 'POST']) # initial route to display the reg page - def index(): + SSO_ATTRIBUTE_MAP = { + 'ADFS_LOGIN': (True, 'username'), + 'ADFS_FULLNAME': (True, 'fullname'), + 'ADFS_EMAIL': (True, 'email') + } + app.config.setdefault('SSO_ATTRIBUTE_MAP', SSO_ATTRIBUTE_MAP) + app.config.setdefault('SSO_LOGIN_URL', '/login') - if 'uid' not in session: - session['uid']=str(uuid.uuid4()) + shib = SSO(app=app) - if 'bid' not in session: - # Todo get blazerid from Shib/BasicAuth - pass + @shib.login_handler + def login(user_info): + session['user'] = user_info + return redirect('/') - if 'fullname' not in session: - # Todo get fullname from Shib/BasicAuth - pass + @app.route('/', methods=['GET', 'POST']) # initial route to display the reg page + def index(): - if 'email' not in session: - # Todo get email from Shib/BasicAuth - pass + if 'uid' not in session: + session['uid'] = str(uuid.uuid4()) if "redir" in request.args and 'return_url' not in session: # check for redir arg in url session['return_url'] = request.args.get("redir") @@ -40,8 +43,10 @@ def create_app(config_name): else: session['return_url'] = request.referrer - # return render_template('auth/SignUp.html', room_id=session['uid'], username=session['username'], fullname=session['fullname'], - # email=session['email'], referrer=session['return_url']) + # return render_template('auth/SignUp.html', room_id=session['uid'], username=session['user'].get('username'), + # fullname=session['user'].get('fullname'), email=session['user'].get('email'), + # referrer=session['return_url']) + return render_template('auth/SignUp.html', room_id=session['uid'], referrer=session['return_url']) # misc page error catching -- GitLab