2015-01-31 5 views
1

Моя проблема заключается в том, что PSA позволит пользователю отключать свой адрес электронной почты при регистрации через Facebook, что вызывает проблемы на всей территории. Есть ли способ потребовать, чтобы данные во время регистрации?python-social-auth требуется поле электронной почты

я мог обойти его, используя простой

if no email create a fake one generated like [email protected] 

, но все это уродливое обходной путь.

ответ

1

Checkot вне Python Social Auth docs

, чтобы вы начали ...

в вашем settings.py

SOCIAL_AUTH_PIPELINE = (
    ... 
    'users.social_stuff.create_user', 
    ... 
) 

затем в пользователей/трубопровода/create_user.py

def create_user(backend, details, response, user=None, *args, **kwargs): 
    email = details.get('email')[:255] 

    EMAIL_RE = re.compile(r'[^@][email protected][^@]+\.[^@]+') 

    if not EMAIL_RE.match(email): 
     # return to a separate page and display an error 
     response = HttpResponseRedirect('/some-url/') 
     messages.error(request, "An email address is required") 
     return response 
    else: 
     # logic to create a user 

также вы хотите подумать, действительно ли требуется электронное письмо. Если его нет, то просто установите

email = models.EmailField(blank=True) 

и сохранить пользователю и попросить их вежливо заполнить форму позже

Смежные вопросы