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