Django Allauth Social Login Возврат на страницу входа в систему
В настоящее время я работаю с сервером единого входа, используя django allauth и oauth-toolkit. После этого у меня есть два клиента, первый из которых - общего назначения, а второй - портал поддержки.
Когда человек входит в систему поддержки, у меня есть проверка, чтобы убедиться, что он является пользователем поддержки (на основе некоторых полей в общем представлении в mysql).
Если человек не является членом команды поддержки, я хочу перенаправить его на страницу входа и вывести ошибку. Но при этом я попадаю в исключение, где получаю
У объекта 'HttpResponseRedirect' нет атрибута 'is_existing'
Что касается кода
class AuthAdapter(OAuth2Adapter):
provider_id = AuthProvider.id
# Fetched programmatically, must be reachable from container
access_token_url = '{}:{}/o/token/'.format(settings.AUTH_BASE_URL, settings.AUTH_PORT)
profile_url = '{}:{}/profile/'.format(settings.AUTH_BASE_URL, settings.AUTH_PORT)
# Accessed by the user browser, must be reachable by the host
authorize_url = '{}:{}/o/authorize/'.format(settings.AUTH_BASE_URL, settings.AUTH_PORT)
def complete_login(self, request, app, token, **kwargs):
headers = {'Authorization': 'Bearer {0}'.format(token.token)}
resp = requests.get(self.profile_url, headers=headers)
extra_data = resp.json()
from support.users.views import check_support_user
is_support_user = check_support_user(extra_data['id'], extra_data['username'], extra_data['email'])
if not is_support_user:
base_url = reverse("login")
query_string = urlencode({
'error': "Invalid"
})
url = '{}?{}'.format(base_url, query_string)
return HttpResponseRedirect(url)
return self.get_provider().sociallogin_from_response(request, extra_data)
У меня есть еще два адаптера, один для учетной записи и адаптер социальной учетной записи, которые делают другие вещи, но мне интересно, можно ли уйти отсюда и просто заставить перенаправить обратно на логин, без дальнейшей обработки.