XH_Digital_Management/common/auth.py

26 lines
809 B
Python

from django.contrib.auth.decorators import user_passes_test
from functools import wraps
from django.shortcuts import redirect
from django.core.exceptions import PermissionDenied
def is_in_group(user, group_name):
return user.groups.filter(name=group_name).exists()
def group_required(group_name):
return user_passes_test(lambda u: is_in_group(u, group_name))
def custom_permission_required(perm, raise_exception=False):
def decorator(view_func):
@wraps(view_func)
def _wrapped_view(request, *args, **kwargs):
if request.user.has_perm(perm):
return view_func(request, *args, **kwargs)
if raise_exception:
raise PermissionDenied
return redirect('error_page')
return _wrapped_view
return decorator