diff --git a/app/profile/routes.py b/app/profile/routes.py index 6af9ed173137567d218401ed891b25d9b5f4c128..3479ff078d87a794ed60752a5d8d8ccc6059be28 100644 --- a/app/profile/routes.py +++ b/app/profile/routes.py @@ -1,5 +1,5 @@ #https://www.digitalocean.com/community/tutorials/how-to-add-authentication-to-your-app-with-flask-login#step-1-installing-packages -from flask import render_template, redirect, url_for, request, flash, jsonify, session, current_app, abort +from flask import render_template, redirect, url_for, request, flash, jsonify, session, current_app from flask_principal import Identity, identity_changed from flask_login import login_user, logout_user, login_required, current_user from werkzeug.security import check_password_hash @@ -8,13 +8,13 @@ from app.models import User from app.logger import auth_logger from app import db -@bp.route('/signup/booking/on_hold') -def signup_book_cache(): - session['booking_cache'] = - - @bp.route('/signup', methods=['GET', 'POST']) def signup(): + #If a callback URL has been sent in any request add it to the session, once user signed up it will be handled and return + #the user to the previous page they were browsing (does not currently hold a full page cache) + if request.args.get('callback'): + session['callback'] = request.args.get('callback') + if request.method == 'POST': form_data = { 'email': request.form.get('email'), @@ -39,6 +39,13 @@ def signup(): db.session.commit() login_user(new_user) + + if session['callback']: + flash("Account successfully created. Please review your booking before continuing", 'success') + callback = session.pop('callback') + return redirect(callback) + + flash('Successfully created your account. You have been logged in automatically', 'success') return redirect(url_for('profile.index')) except Exception as e: auth_logger.error(f"Unable to create user: {e}") @@ -88,6 +95,11 @@ def login_post(): identity_changed.send(current_app._get_current_object(), identity=Identity(user.id)) + if session['callback']: + callback = session.pop('callback') + flash("You have been successfully logged in. Please review your booking before continuing", 'success') + return redirect(callback) + return redirect(url_for('profile.index')) @@ -133,10 +145,13 @@ def logout(): @bp.route('/login') def login(): + #If a callback URL has been sent in any request add it to the session, once user logged in it will be handled and return + #the user to the previous page they were browsing (does not currently hold a full page cache) + if request.args.get('callback'): + session['callback'] = request.args.get('callback') if current_user.is_authenticated: return redirect(url_for('profile.index')) - #user not logged in return render_template('profile/login.html')