Хочу дать пользователям из разных групп доступ только в их часть сайта. Авторизацию делаю таким образом:
def signin(request):
if request.method == 'GET':
return render(request, 'site/login.html')
elif request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
if user.groups.filter(name__in=['Admins']) or user.is_superuser:
return HttpResponseRedirect('/cp/')
elif user.groups.filter(name__in=['Counteragents']):
return HttpResponseRedirect('/counteragent/')
elif user.groups.filter(name__in=['Clients']):
return HttpResponseRedirect('/client/')
else:
pass
else:
pass
Затем на вьюшках проверяю пренадлежность пользователя к нужной группе:
def admin_check(user):
if user.groups.filter(name__in=['Admins']) or user.is_superuser:
return True
else:
return False
@user_passes_test(admin_check)
def admin_home(request):
return render(request, 'admin/home.html')
Есть ли лучшее решение данного вопроса? Может такой подход вообще никуда не годится?