added @login_requried, fixes #6

main
Mark Cotton 2023-08-20 22:05:48 -05:00
parent fb10657e60
commit b02ba38eea
1 changed files with 40 additions and 42 deletions

74
app.py
View File

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