From 91b50d6b2e669cf5d6249ba787e9bbd500bbd79a Mon Sep 17 00:00:00 2001
From: root <krish94@uab.edu>
Date: Tue, 5 Apr 2022 22:44:54 -0500
Subject: [PATCH] 1. Reading eppa value from request header 2. Sending to error
 page of eppa not valid

---
 app/__init__.py | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/app/__init__.py b/app/__init__.py
index 5dd8c41..ab5b673 100644
--- a/app/__init__.py
+++ b/app/__init__.py
@@ -12,6 +12,7 @@ from flask_bootstrap import Bootstrap
 import random
 import os
 import json
+import sys
 
 def create_app(config_name):
     app = Flask(__name__, static_folder='static') # initialization of the flask app
@@ -22,11 +23,13 @@ def create_app(config_name):
         username_key = list(filter(lambda key: (request.headers.get(key)  is not None), vars.username_key))
         fullname_key = list(filter(lambda key: (request.headers.get(key) is not None), vars.fullname_key))
         email_key = list(filter(lambda key: (request.headers.get(key) is not None), vars.email_key))
+        eppa_key = list(filter(lambda key: (request.headers.get(key) is not None), vars.eppa_key))
 
         user = {
             "username": (request.headers.get(username_key[0]) if len(username_key) > 0 else None),
             "fullname": (request.headers.get(fullname_key[0]) if len(fullname_key) > 0 else None),
             "email": (request.headers.get(email_key[0]) if len(email_key) > 0 else None),
+            "eppa": (request.headers.get(eppa_key[0]) if len(eppa_key) > 0 else None),
         }
 
         return user
@@ -34,6 +37,7 @@ def create_app(config_name):
     @app.route('/', methods=['GET', 'POST']) # initial route to display the reg page
     def index():
 
+        valid_eppa = ["staff", "faculty", "student"]
         invalid_state = ["blocked", "certification"]
 
         if 'uid' not in session:
@@ -42,16 +46,14 @@ def create_app(config_name):
         if 'user' not in session:
             session["user"] = get_authorized_user()
 
-        if "redir" in request.args and 'return_url' not in session: # check for redir arg in url
-            session['return_url'] = request.args.get("redir")
+        session['return_url'] = request.args.get('redir', vars.default_referrer)
 
-        elif "redir" not in request.args and 'return_url' not in session:
-            session['return_url'] = vars.default_referrer
-        else:
-            session['return_url'] = request.referrer
+
+        if session['user'].get('eppa') in not valid_eppa:
+            return render_template('errors/error.html', title='shibboleth error')
 
         if rc_util.check_state(session['user'].get('username')) in invalid_state:
-            return render_template('errors/error.html', title='account creation failed')
+            return render_template('errors/error.html', title='account state error')
         
         else:
             return render_template('auth/SignUp.html', room_id=session['uid'],
@@ -62,6 +64,8 @@ def create_app(config_name):
                                cancel_msg=messages.cancel_message,
                                error_msg=messages.error_message)
 
+
+
     @app.route('/error_account')
     def error_account_create():    
         return render_template('errors/error.html', title='account creation failed')
-- 
GitLab