from functools import wraps from flask import abort, redirect, request, url_for, flash from flask_login import current_user def requires_roles(*roles): def wrapper(f): @wraps(f) def wrapped(*args, **kwargs): if get_current_user_role() not in roles: flash('Authentication error, please check your details and try again','error') return redirect(url_for('main.index')) return f(*args, **kwargs) return wrapped return wrapper def get_current_user_role(): return current_user.role.name