From b81897c36d808612dfa9214162a3c06c3992bcc9 Mon Sep 17 00:00:00 2001
From: Mitchell Moore <mmoo97@uab.edu>
Date: Mon, 23 Mar 2020 08:14:54 -0500
Subject: [PATCH] Implemented referrer to capture user entrypoint, to be used
 to redirect to on account creation

- Feat redirect
- Fix redir logic
---
 app/__init__.py                |  9 +++++++--
 app/templates/auth/SignUp.html | 14 ++++++++------
 run.py                         |  6 ++++--
 tasks.py                       |  2 ++
 vars.py                        |  1 +
 5 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/app/__init__.py b/app/__init__.py
index 2343984..c30a7f1 100644
--- a/app/__init__.py
+++ b/app/__init__.py
@@ -2,6 +2,7 @@
 
 # local imports
 from __future__ import print_function
+import vars
 
 # third-party imports
 import uuid
@@ -21,9 +22,13 @@ def create_app(config_name):
             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") or "/pun/sys/dashboard"
+            session['return_url'] = request.args.get("redir")
+        elif "redir" not in request.args and 'return_url' not in session:
+            session['return_url'] = vars.default_referrer
+        else:
+            session['return_url'] = request.referrer
 
-        return render_template('auth/SignUp.html', room_id=session['uid'])
+        return render_template('auth/SignUp.html', room_id=session['uid'], referrer=session['return_url'])
 
     # misc page error catching
     @app.errorhandler(403)
diff --git a/app/templates/auth/SignUp.html b/app/templates/auth/SignUp.html
index 27e2f4f..891a09a 100644
--- a/app/templates/auth/SignUp.html
+++ b/app/templates/auth/SignUp.html
@@ -11,23 +11,26 @@
     var socket = io.connect('http://' + document.domain + ':' + location.port);
 
     socket.on( 'connect', function() {
-        socket.emit( 'join_room' )
+        socket.emit( 'join_room', {
+            referrer: '{{ referrer }}'
+        });
 
         socket.on( 'creating account', function( msg ) {
            document.getElementById("error").innerText = "";
            displayloading();
-        })
+        });
 
         socket.on( 'account ready', function( msg ) {
           $('#myModal').modal('hide');
           alert("Account has been created!");
-        })
+          window.location.replace('{{ referrer }}');
+        });
 
         socket.on( 'Account creation failed', function( msg ) {
           document.getElementById("error").innerText = "Registration Failed. Please try again.";
-        })
+        });
 
-    })
+    });
 </script>
 
   <style type="text/css">
@@ -130,4 +133,3 @@
 </footer>
 </body>
 </html>
-
diff --git a/run.py b/run.py
index 85381ff..ff6b025 100644
--- a/run.py
+++ b/run.py
@@ -2,7 +2,6 @@
 
 import os
 import time
-import signal
 import tasks
 import vars
 
@@ -20,12 +19,15 @@ app.config['SECRET_KEY'] = vars.key
 socketio = SocketIO(app, message_queue= vars.message_queue)
 
 
+
 @socketio.on('join_room')
-def on_room():
+def on_room(json):
 
     room = str(session['uid'])
+    referrer = json['referrer']
     join_room(room)
     print('\t\t\t|-----Room ID: ' + room)
+    print('\t\t\t|-----Referrer: ' + referrer)
 
 
 @socketio.on('request account')
diff --git a/tasks.py b/tasks.py
index e380c9c..7deec3a 100644
--- a/tasks.py
+++ b/tasks.py
@@ -12,10 +12,12 @@ celery = Celery('flask_user_reg', broker=broker_url)
 
 socketio = SocketIO(message_queue=vars.message_queue)
 
+
 def send_msg(event, room):
    print("Post '{}' to room '{}'".format(event,room))
    socketio.emit(event, room=room)
 
+
 @celery.task
 def celery_create_account(username, fullname, reason, session):
     room = session
diff --git a/vars.py b/vars.py
index 6d94b57..988ed18 100644
--- a/vars.py
+++ b/vars.py
@@ -3,3 +3,4 @@ password = 'reggie'
 key = 'vnkdjnfjknfl1232'
 broker_url =  'amqp://' + id + ':' + password + '@ohpc:5672/'
 message_queue =  broker_url + 'socketio'
+default_referrer = "https://docs.uabgrid.uab.edu/wiki/Cheaha_Quick_Start"
-- 
GitLab