from functools import wraps from flask import url_for, redirect, session, jsonify, abort def valid_session_required(api=False): def decorator(f): @wraps(f) def decorated_function(*args, **kwargs): if 'unauthenticated' not in session or 'user_id' not in session or 'username' not in session: if api: return jsonify(error=True, message="Unauthenticated session"), 403 redirect(url_for('user.logout')) if session['unauthenticated'] and 'user_keys' not in session: session['user_keys'] = {} return f(*args, **kwargs) return decorated_function return decorator def discord_users_only(api=False): def decorator(f): @wraps(f) def decorated_function(*args, **kwargs): if 'unauthenticated' not in session or session['unauthenticated']: if api: return jsonify(error=True, message="Not logged in as a discord user"), 403 return redirect(url_for("user.login_authenticated")) return f(*args, **kwargs) return decorated_function return decorator