18 lines
554 B
Python
18 lines
554 B
Python
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 |