vgarvardt / django-loginza

Django application for Loginza service
http://loginza.ru
38 stars 17 forks source link

Предотвращение создания пользователей без имени #18

Closed ghost closed 12 years ago

vgarvardt commented 12 years ago

В каких случаях создается пользователь без имени?

За то, чтобы избежать этого, отвечает следующий код:

loginza_email = loginza_data.get('email', '')
email = loginza_email if '@' in loginza_email else settings.DEFAULT_EMAIL

# if nickname is not set - try to get it from email
# e.g. vgarvardt@gmail.com -> vgarvardt
loginza_nickname = loginza_data.get('nickname', None)
username = loginza_nickname if loginza_nickname is not None else email.split('@')[0]

По умолчанию settings.DEFAULT_EMAIL (в глобальных настройках за это отвечает LOGINZA_DEFAULT_EMAIL) это user@loginza, поэтому при отсутствии имени пользователя в данных пришедших со стороны логинзы оно и так должно стать user.

Можно посмотреть пример, когда этот код отрабатывает некорректно?

ghost commented 12 years ago

Точно. Причина оказалась именно в том, что я установил значение LOGINZA_DEFAULT_EMAIL в пустую строчку. А подобный случай возникал у меня при авторизации через аккаунт ВКонтакте, в котором у меня нет вообще никакой информации, соответственно nickname и email были пустыми. В таком случае даже не знаю принимать или нет такой request, либо сделать соответствующую пометку в документации.

vgarvardt commented 12 years ago

Добавил упоминание об этом в документацию.