17 lines
478 B
Python
17 lines
478 B
Python
from django.core.exceptions import PermissionDenied
|
|
|
|
def role_required(allowed_roles):
|
|
"""
|
|
Usage:
|
|
@role_required(["manager", "businessman"])
|
|
def view(request):
|
|
...
|
|
"""
|
|
def decorator(view_func):
|
|
def _wrapped_view(request, *args, **kwargs):
|
|
if request.user.role not in allowed_roles:
|
|
raise PermissionDenied
|
|
return view_func(request, *args, **kwargs)
|
|
return _wrapped_view
|
|
return decorator
|