<li>
<form action="{% url begin "yandex" %}" method="post">{% csrf_token %}
<div>
- <label for="openid_ya_user">Yandex user:</label>
+ <label for="openid_ya_user">Yandex user:(optional)</label>
<input id="openid_ya_user" type="text" value="" name="openid_ya_user" />
<input type="submit" value="Login"/>
</div>
<h3>Login using other authentication systems:</h3>
<ul>
<li><a rel="nofollow" href="{% url begin "vkontakte" %}">VKontakte OpenAPI</a></li>
+ <li><a rel="nofollow" href="{% url begin "yandex" %}">Yandex OpenID 2.0</a></li>
</ul>
</div>
{% endblock %}
'social_auth.backends',
'social_auth.backends.contrib'],
long_description=long_description(),
- install_requires=['oauth2>=1.5.167',
+ install_requires=['django>=1.2.5',
+ 'oauth2>=1.5.167',
'python_openid>=2.2'],
classifiers=['Framework :: Django',
'Development Status :: 4 - Beta',
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 urlparse
# 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):
urlparse.urlsplit(response.identity_url)\
.path.strip('/')
- values['email'] = values.get('email') or values[USERNAME] + '@yandex.ru'
return values
def openid_url(self):
"""Returns Yandex authentication URL"""
if YANDEX_USER_FIELD not in self.data:
- raise ValueError, 'Missing Yandex user identifier'
- return YANDEX_URL % self.data[YANDEX_USER_FIELD]
+ return YANDEX_OID_2_URL
+ else:
+ return YANDEX_URL % self.data[YANDEX_USER_FIELD]
# Backend definition
BACKENDS = {