Skip to main content

User social authentication with ulogin.ru service

Project description

django-ulogin

Django-ulogin является приложением для социальной аутентификации пользователей с помощью интернет-сервиса ULOGIN.RU

Требования

  • Python 2.6+

  • Django Framework v 1.2.5+

  • requests

Лицензия

Распространяется по лицензии MIT

Установка

  1. Для установки django-ulogin в текущее окружение можно воспользоваться утилитой pip.

pip install django-ulogin
  1. Откройте settings.py и добавьте в INSTALLED_APPS приложение django_ulogin

INSTALLED_APPS += ('django_ulogin', )
  1. Откройте urls.py и добавьте схему URL:

urlpatterns += patterns('',
    url(r'^ulogin/', include('django_ulogin.urls')),
)
  1. Синхронизируйте базу данных

./manage.py syncdb

Использование

Для использования приложения достаточно в любом месте шаблона вставить подключение шаблонной библиотеки ulogin_tags и вызов тега ulogin_widget.

{% load ulogin_tags %}
{% ulogin_widget }

На месте тега ulogin_widget при рендеринге появится код интеграции Вашего сайта ULOGIN.

Тонкая настройка

По умолчанию django_ulogin требует от сервиса только одно обязательное поле - email. Вы можете указать для проекта список как необходимых полей (определив в settings список ULOGIN_FIELDS), так и опциональных (ULOGIN_OPTIONAL):

# Поля first_name и last_name обязательны
ULOGIN_FIELDS = ['first_name', 'last_name']

#  Необязательные поля: пол, URL аватара, дата рождения
ULOGIN_OPTIONAL = ['sex', 'photo', 'bdate']

Список всех полей, которые сообщает ULOGIN:

  • first_name

  • last_name

  • email

  • nickname

  • bdate (дата рождения, передаётся в формате dd.mm.yyyy)

  • sex (пол: 1 означает женский, 2 - мужской)

  • photo (аватар, размер 100х100 пикселей)

  • photo_big

  • city

  • country

Внешний вид виджета определяется параметром ULOGIN_DISPLAY. Доступно три варианта:

  • panel

  • small (по умолчанию)

  • button

Список используемых провайдеров определяется директивой ULOGIN_PROVIDERS. По умолчанию включены:

  • vkontakte

  • facebook

  • twitter

  • google

  • livejournal

Дополнительные провайдеры, которые будут показаны внутри выпадающего меню, определяются в директиве ULOGIN_HIDDEN. По умолчанию: - yandex - odnoklassniki - mailru - openid

Полный список поддерживаемых провайдеров можно уточнить на сайте http://ulogin.ru

Если при входе нужно выполнить какую-то JavaScript-функцию, укажите её в виде строки в переменной ULOGIN_CALLBACK.

Сигналы

При аутентификации пользователя создаётся новый Django-пользователь, username которого заполняется uuid4-хешем. Однако при создании новой аутентификации срабатывает сигнал django_ulogin.signals.assign, в котором передаётся объект request, пользователь Django, аутентификация и флаг того, была ли создана запись.

Чтобы сделать имя поля дружественным пользователю, достаточно создать объект, подписанный на сигннал django_ulogin.signals.assign:

def catch_ulogin_signal(*args, **kwargs):
    """
    Обновляет модель пользователя: исправляет username, имя и фамилию на
    полученные от провайдера.

    В реальной жизни следует иметь в виду, что username должен быть уникальным,
    а в социальной сети может быть много "тёзок" и, как следствие,
    возможно нарушение уникальности.

    """
    user   = kwargs['user']
    json   = kwargs['ulogin_data']

    if kwargs['registered']:
        user.username = json['username'] # В при
        user.first_name = json['first_name']
        user.last_name = json['last_name']
        user.email = json['email']
        user.save()

from django_ulogin.models import ULoginUser

assign.connect(receiver = catch_ulogin_signal,
               sender   = ULoginUser,
               dispatch_uid = 'customize.models')

Можно изучить тестовый проект, в котором реализована функция сохранения данных, полученных от ULogin:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

django-ulogin-0.1.2.beta.1.zip (20.6 kB view hashes)

Uploaded Source

django-ulogin-0.1.2.beta.1.tar.gz (9.7 kB view hashes)

Uploaded Source

django-ulogin-0.1.2.beta.1.tar.bz2 (9.7 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page