2020-12-04 07:17:58 +00:00
|
|
|
from flask import session, redirect, url_for, flash
|
2020-07-29 00:24:59 +00:00
|
|
|
from functools import wraps
|
2020-12-04 07:17:58 +00:00
|
|
|
from suchwow.models import Profile, Moderator
|
2020-07-29 00:24:59 +00:00
|
|
|
|
|
|
|
|
|
|
|
def login_required(f):
|
|
|
|
@wraps(f)
|
|
|
|
def decorated_function(*args, **kwargs):
|
|
|
|
if "auth" not in session or not session["auth"]:
|
2020-07-30 08:36:31 +00:00
|
|
|
return redirect(url_for("auth.login"))
|
2020-07-29 00:24:59 +00:00
|
|
|
return f(*args, **kwargs)
|
2020-08-10 06:59:45 +00:00
|
|
|
return decorated_function
|
|
|
|
|
2020-12-04 07:17:58 +00:00
|
|
|
def moderator_required(f):
|
|
|
|
@wraps(f)
|
|
|
|
def decorated_function(*args, **kwargs):
|
|
|
|
if "auth" not in session or not session["auth"]:
|
|
|
|
return redirect(url_for("auth.login"))
|
|
|
|
m = Moderator.filter(username=session["auth"]["preferred_username"])
|
|
|
|
if m:
|
|
|
|
return f(*args, **kwargs)
|
|
|
|
else:
|
2021-11-08 09:04:58 +00:00
|
|
|
flash("You are not a moderator", "is-warning")
|
2020-12-04 07:17:58 +00:00
|
|
|
return redirect(url_for("index"))
|
|
|
|
return decorated_function
|
|
|
|
|
2020-08-10 06:59:45 +00:00
|
|
|
def profile_required(f):
|
|
|
|
@wraps(f)
|
|
|
|
def decorated_function(*args, **kwargs):
|
|
|
|
un = session["auth"]["preferred_username"]
|
|
|
|
if not Profile.filter(username=un):
|
|
|
|
url = "{}?redirect={}".format(
|
|
|
|
url_for("profile.edit"),
|
|
|
|
url_for("post.create")
|
|
|
|
)
|
|
|
|
return redirect(url)
|
|
|
|
return f(*args, **kwargs)
|
|
|
|
return decorated_function
|