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