IRC
@IRC
Django developer & Atlassian DevOps engineer

Как правильно сделать redirect в pipeline, если пользователь новый (python-social-auth)?

Добрый день.

Недавно начал изучать Django (в. 1.8) с создания небольшого проекта. В проекте необходима авторизация через Steam-аккаунт, для чего использую библиотеку python-social-auth.

Сделал свою модель пользователя, которая содержит данные уч. записи Steam. Написал pipeline, который определяет новый пользователь или нет, и, в зависимости от этого, создает или обновляет модель пользователя в Django.

В случае, если пользователь новый, я бы хотел отправить его на страницу заполнения профиля (email, имя и т.д.), но не совсем понимаю как лучше это сделать. Если я использую HttpResponseRedirect, то мой пользователь во view попадает как аноним.

Код pipeline:
# -*- coding: utf-8 -*-
from MySteam.settings import SA_USER_LEVEL

USER_FIELDS = ['email']

def update_or_create_user(strategy, details, backend, uid, user=None, *args, **kwargs):
    strategy.provider = 'steam'
    try:
        get_user = SteamUser.objects.get(steam_id=uid)
    except SteamUser.DoesNotExist:
        get_user = None
    if get_user:
        get_user.update_steam_data()
        return {
            'is_new': False,
            'social': strategy,
            'user': get_user,
            'new_association': False
        }
    else:
        user = SteamUser.objects.create_user()
    return {
        'is_new': True,
        'social': strategy,
        'user': user,
        'new_association': False
    }

Подскажите, что для этого необходимо использовать и как?

Спасибо.
  • Вопрос задан
  • 677 просмотров
Решения вопроса 1
IRC
@IRC Автор вопроса
Django developer & Atlassian DevOps engineer
Решение нашлось в документации по библиотеки:
SOCIAL_AUTH_NEW_USER_REDIRECT_URL = '/new-users-redirect-url/'
Эта переменная отвечает за редирект новых пользователей.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@marazmiki
Укротитель питонов
Вот этот раздел документации может помочь: Interrupting the Pipeline (and communicating with ...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы