]> git.parisson.com Git - django-social-auth.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorStas Kravets <krvss@mail.ru>
Mon, 17 Oct 2011 13:48:11 +0000 (17:48 +0400)
committerStas Kravets <krvss@mail.ru>
Mon, 17 Oct 2011 13:48:11 +0000 (17:48 +0400)
Conflicts:
social_auth/backends/__init__.py

1  2 
example/settings.py
social_auth/backends/__init__.py
social_auth/backends/contrib/yandex.py

Simple merge
Simple merge
index 5155d094799025b4a3a7e6e444be347ae7b2b32d,0000000000000000000000000000000000000000..fee08b8fe7c5ad8e0baae6c9ae352f27ed64f537
mode 100644,000000..100644
--- /dev/null
@@@ -1,48 -1,0 +1,53 @@@
-                                    
 +"""
 +Yandex OpenID support.
 +
 +This contribution adds support for Yandex.ru OpenID service in the form
 +openid.yandex.ru/user. Username is retrieved from the identity url.
 +
 +If username is not specified, OpenID 2.0 url used for authentication.
 +"""
++import logging
++logger = logging.getLogger(__name__)
++
 +import urlparse
 +
 +from social_auth.backends import OpenIDBackend, OpenIdAuth, USERNAME
 +
 +
 +# Yandex conf
 +YANDEX_URL = 'http://openid.yandex.ru/%s'
 +YANDEX_USER_FIELD = 'openid_ya_user'
 +YANDEX_OID_2_URL = 'http://yandex.ru'
 +
 +
 +class YandexBackend(OpenIDBackend):
 +    """Yandex OpenID authentication backend"""
 +    name = 'yandex'
 +
 +    def get_user_details(self, response):
 +        """Generate username from identity url"""
 +        values = super(YandexBackend, self).get_user_details(response)
 +        values[USERNAME] = values.get(USERNAME) or \
 +                           urlparse.urlsplit(response.identity_url)\
 +                                   .path.strip('/')
++
++        values['email'] = values.get('email') or ''
++
 +        return values
 +
 +
 +class YandexAuth(OpenIdAuth):
 +    """Yandex OpenID authentication"""
 +    AUTH_BACKEND = YandexBackend
 +        
 +    def openid_url(self):
 +        """Returns Yandex authentication URL"""
 +        if YANDEX_USER_FIELD not in self.data:
 +            return YANDEX_OID_2_URL
 +        else:
 +            return YANDEX_URL % self.data[YANDEX_USER_FIELD]
 +    
 +# Backend definition
 +BACKENDS = {
 +    'yandex': YandexAuth,
 +}