def login(request):
defaults = {
'authentication_form': CustomAuthForm,
'template_name': 'accounts/login.html',
}
if request.user.is_anonymous():
return auth_login(request, **defaults)
elif request.user.is_owner():
return redirect('/asdasdasd')
return auth_login(request, **defaults)
Читаем код:
1. Функция логина
2. Если пользователь анонимный - залогинить.
3. Если пользователь не анонимен и метод is_owner() возвращает True - редиректнуть.
4. Во всех остальных случаях - залогинить.
Соответственно, проверка is_owner() происходит только в том случае, если пользователь авторизован и пытается зайти на страницу login. Теперь об ошибках:
1. Непонятно зачем дёргается стандартная ф-ия аутентификации.
2. Не думаю, что смысл в проверке is_owner имеет смысл вообще.
3. Её можно упростить до вида:
def login(request):
defaults = {
'authentication_form': CustomAuthForm,
'template_name': 'accounts/login.html',
}
if not request.user.is_authenticated() and request.user.is_owner():
return redirect('/asdasdasd')
return auth_login(request, **defaults)
Теперь по поводу вопроса:
Пользователь зашёл и ввёл логин/пароль. Его перекинуло на стандартную View авторизации джанги (иными словами, эта вьюха вообще не нужна: всё что она делает - редиректит ), вот он и вошёл безо всяких проверок на owner.
Для решения задачи необходимо написать собственное представление для входа в систему.
P.S. Какие странные пользователи появились у моей любимой Django в последнее время. Аж дух захватывает.