foxygit / infodisplay Log in
commits tags

/kiosk/auth.py · 646 B

raw
from functools import wraps
from flask import session, request, jsonify, redirect, url_for


def login_required(f):
    @wraps(f)
    def decorated(*args, **kwargs):
        if not session.get('logged_in'):
            is_xhr = request.headers.get('X-Requested-With') == 'XMLHttpRequest'
            wants_json = request.is_json or 'application/json' in request.headers.get('Accept', '')
            if is_xhr or wants_json or request.path.startswith('/api/'):
                return jsonify({'error': 'login_required'}), 401
            return redirect(url_for('login', next=request.path))
        return f(*args, **kwargs)
    return decorated