def my_custom_authenticated(user):
if user:
if user.is_authenticated():
return user.groups.filter(name=settings.MY_CUSTOM_GROUP_NAME).exists()
return False
from functools import wraps
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from core.helpers.flash import send_flash_error
def lender_only(redirect_to='plateforme.views.vue_login', error_flash_message=None):
def inner_render(fn):
@wraps(fn) # Ensure the wrapped function keeps the same name as the view
def wrapped(request, *args, **kwargs):
if request.context.user.is_authenticated and request.context.user.is_lender:
return fn(request, *args, **kwargs)
else:
if error_flash_message:
send_flash_error(request, error_flash_message) # Replace by your own implementation
return HttpResponseRedirect(reverse(redirect_to))
return wrapped
return inner_render
# Usage:
@lender_only('vitrine.views.projets', {'message': "Oops, can't go there."})
def render_page_index(request):
from django.contrib.auth.decorators import user_passes_test
from django.core.exceptions import PermissionDenied
def perm_group_required(group, login_url='/', raise_exception=False):
def check_group(user):
if user.groups.filter(name=group).exists():
return True
# In case the 403 handler should be called raise the exception
if raise_exception:
raise PermissionDenied
return False
return user_passes_test(check_group, login_url=login_url)
@perm_group_required('add_customer_group')
#group name="add_customer_group"
def employee_add_customer(request):
##logic
...