from functools import wraps import validators from flask import g, request, jsonify from SWSCloudAPI.Utils import Tokens from SWSCloudCore.models import Users def login_required(f): @wraps(f) def decorated_function(*args, **kwargs): # validate email if not validators.email(request.json.get('email')): return jsonify(status='error', message='invalid email format') # verify email/password if not Users.auth(request.json.get('email'), request.json.get('password')): return jsonify(status='error', message='invalid auth') # return f(*args, **kwargs) return decorated_function def content_type(f): @wraps(f) def decorated_function(*args, **kwargs): if request.headers.get('Content-Type') != 'application/json': return jsonify(status='error', message='content-type must be application/json') return f(*args, **kwargs) return decorated_function def auth_token(f): @wraps(f) def decorated_function(*args, **kwargs): # g.auth_token = request.headers.get('X-Auth-Token', None) # if not g.auth_token: return jsonify(status='error', message='X-Auth-Token not specified') # check exists token if not Tokens.exists(g.auth_token): return jsonify(status='error', message='token not exists') # g.tokens = Tokens() g.user = g.tokens.get(g.auth_token) return f(*args, **kwargs) return decorated_function