2015-11-10 16:51:45 +00:00
|
|
|
import config
|
2015-12-01 04:37:45 +00:00
|
|
|
from flask import session, redirect, url_for, flash, g, abort
|
2015-11-10 16:51:45 +00:00
|
|
|
from functools import wraps
|
|
|
|
|
|
|
|
def login_required(f):
|
|
|
|
@wraps(f)
|
|
|
|
def decorated(*args, **kwargs):
|
|
|
|
if "team_id" not in session:
|
|
|
|
flash("You need to be logged in to access that page.")
|
|
|
|
return redirect(url_for('login'))
|
|
|
|
return f(*args, **kwargs)
|
|
|
|
return decorated
|
|
|
|
|
|
|
|
def confirmed_email_required(f):
|
|
|
|
@wraps(f)
|
|
|
|
def decorated(*args, **kwargs):
|
|
|
|
if "team_id" not in session:
|
|
|
|
flash("You need to be logged in to access that page.")
|
|
|
|
return redirect(url_for('login'))
|
|
|
|
if not g.team.email_confirmed:
|
|
|
|
flash("You need to confirm your email in order to access that page.")
|
|
|
|
return redirect(url_for('dashboard'))
|
|
|
|
return f(*args, **kwargs)
|
|
|
|
return decorated
|
|
|
|
|
|
|
|
def competition_running_required(f):
|
|
|
|
@wraps(f)
|
|
|
|
def decorated(*args, **kwargs):
|
2015-12-01 17:40:43 +00:00
|
|
|
if not config.competition_is_running():
|
2015-11-10 16:51:45 +00:00
|
|
|
flash("The competition must be running in order for you to access that page.")
|
|
|
|
return redirect(url_for('scoreboard'))
|
|
|
|
return f(*args, **kwargs)
|
|
|
|
return decorated
|
|
|
|
|
2015-12-01 04:05:17 +00:00
|
|
|
def admin_required(f):
|
|
|
|
@wraps(f)
|
|
|
|
def decorated(*args, **kwargs):
|
|
|
|
if "admin" not in session:
|
|
|
|
flash("You must be an admin to access that page.")
|
|
|
|
return redirect(url_for("admin.admin_login"))
|
|
|
|
return f(*args, **kwargs)
|
|
|
|
return decorated
|
2015-12-01 04:37:45 +00:00
|
|
|
|
|
|
|
def csrf_check(f):
|
|
|
|
@wraps(f)
|
|
|
|
def decorated(*args, **kwargs):
|
|
|
|
if "csrf" not in kwargs:
|
|
|
|
abort(403)
|
|
|
|
return
|
|
|
|
|
|
|
|
if kwargs["csrf"] != session["_csrf_token"]:
|
|
|
|
abort(403)
|
|
|
|
return
|
|
|
|
|
|
|
|
del kwargs["csrf"]
|
|
|
|
|
|
|
|
return f(*args, **kwargs)
|
|
|
|
return decorated
|