diff --git a/app.py b/app.py index 183f633..3c9b447 100644 --- a/app.py +++ b/app.py @@ -15,6 +15,7 @@ from io import BytesIO import logging logger = logging.getLogger() +from functools import wraps from EagleEyev3 import * from settings import config @@ -67,6 +68,15 @@ Session(app) # switch_account GET /switch_account +def login_required(f): + @wraps(f) + def decorated_function(*args, **kwargs): + if 'een' not in session: + return redirect(url_for('landing')) + + return f(*args, **kwargs) + return decorated_function + @app.route('/landing') @@ -86,13 +96,10 @@ def landing(): @app.route('/') +@login_required def index(): - if 'een' in session: - een = session['een'] - else: - een = EagleEyev3(config) - session['een'] = een + een = session['een'] # using current_user as a proxy for an established valid session if een.access_token == None: @@ -146,10 +153,9 @@ def login_callback(): # This is getting the ?code= querystring value from the HTTP request. code = request.args.get('code') - if 'een' in session: - een = session['een'] - else: - een = EagleEyev3(config) + # create a new een object and store it in their session + een = EagleEyev3(config) + session['een'] = een if (code): @@ -161,6 +167,7 @@ def login_callback(): @app.route('/logout') +@login_required def logout(): if 'een' in session: een = session['een'] @@ -172,11 +179,10 @@ def logout(): @app.route('/cameras') +@login_required def cameras(): - if 'een' in session: - een = session['een'] - else: - een = EagleEyev3(config) + + een = session['een'] logging.debug(een.get_list_of_cameras()) @@ -192,11 +198,10 @@ def cameras(): @app.route('/accounts') +@login_required def accounts(): - if 'een' in session: - een = session['een'] - else: - een = EagleEyev3(config) + + een = session['een'] een.get_list_of_accounts() @@ -210,15 +215,12 @@ def accounts(): @app.route('/switch_account') +@login_required def switch_account(): # This is getting the ?account= querystring value from the HTTP request. account = request.args.get('account') - if 'een' in session: - een = session['een'] - else: - een = EagleEyev3(config) - + een = session['een'] if (account): # switch into account @@ -231,11 +233,10 @@ def switch_account(): @app.route('/camera//preview_image') -def camera__preivew_image(esn=None): - if 'een' in session: - een = session['een'] - else: - een = EagleEyev3(config) +@login_required +def camera__preivew_image(esn=None): + + een = session['een'] camera = een.get_camera_by_id(esn) res = camera.get_live_preview() @@ -247,11 +248,10 @@ def camera__preivew_image(esn=None): @app.route('/camera//preview') -def camera_live_preivew(esn=None): - if 'een' in session: - een = session['een'] - else: - een = EagleEyev3(config) +@login_required +def camera_live_preivew(esn=None): + + een = session['een'] camera = een.get_camera_by_id(esn) @@ -265,11 +265,10 @@ def camera_live_preivew(esn=None): @app.route("/camera//events/") @app.route('/camera//events') -def camera_detail(esn=None, days=DAYS_OF_HISTORY): - if 'een' in session: - een = session['een'] - else: - een = EagleEyev3(config) +@login_required +def camera_detail(esn=None, days=DAYS_OF_HISTORY): + + een = session['een'] camera = een.get_camera_by_id(esn) now = een.time_now() @@ -289,12 +288,11 @@ def camera_detail(esn=None, days=DAYS_OF_HISTORY): @app.route('/camera//status_plot') -def camera_status_plot(esn=None): - if 'een' in session: - een = session['een'] - else: - een = EagleEyev3(config) +@login_required +def camera_status_plot(esn=None): + een = session['een'] + cam = een.get_camera_by_id(esn) logging.debug(cam.events['status'][0])