<ul>
<li><a href="/login/google/">Google</a></li>
<li><a href="/login/yahoo/">Yahoo</a></li>
+ <li>
+ <form action="/login/lj/" method="post">{% csrf_token %}
+ <label for="openid_lj_user">LiveJournal user:</label>
+ <input id="openid_lj_user" type="text" value="" name="openid_lj_user" />
+ <input type="submit" />
+ </form>
+ </li>
<li>
<form action="/login/openid/" method="post">{% csrf_token %}
<label for="openid_identifier">Other provider:</label>
SOCIAL_AUTH_DEFAULT_USERNAME = 'socialauth_user'
SOCIAL_AUTH_COMPLETE_URL_NAME = 'social:complete'
LOGIN_ERROR_URL = '/login/error/'
+
#SOCIAL_AUTH_USER_MODEL = 'app.CustomUser'
+
OpenIDBackend
from .conf import AX_ATTRS, SREG_ATTR, OPENID_ID_FIELD, SESSION_NAME, \
OPENID_GOOGLE_URL, OPENID_YAHOO_URL, TWITTER_SERVER, \
+ OPENID_LJ_URL, OPENID_LJ_USER_FIELD, \
TWITTER_REQUEST_TOKEN_URL, TWITTER_ACCESS_TOKEN_URL, \
TWITTER_AUTHORIZATION_URL, TWITTER_CHECK_AUTH, \
FACEBOOK_CHECK_AUTH, FACEBOOK_AUTHORIZATION_URL, \
"""Return Yahoo OpenID service url"""
return OPENID_YAHOO_URL
+class LiveJournalAuth(OpenIdAuth):
+ """LiveJournal OpenID authentication"""
+ def uses_redirect(self):
+ """LiveJournal uses redirect"""
+ return True
+
+ def openid_url(self):
+ """Returns LJ authentication URL"""
+ if self.request.method != 'POST' or OPENID_LJ_USER_FIELD not in self.request.POST or len(self.request.POST[OPENID_LJ_USER_FIELD]) == 0:
+ raise ValueError, 'Missing LiveJournal user identifier'
+ return OPENID_LJ_URL % self.request.POST[OPENID_LJ_USER_FIELD]
class BaseOAuth(BaseAuth):
"""OAuth base class"""
('http://axschema.org/namePerson/last', 'last_name'),
('http://axschema.org/namePerson/friendly', 'nickname'),
]
-AX_ATTRS = AX_SCHEMA_ATTRS + OLD_AX_ATTRS
-SREG_ATTR = ['email', 'fullname', 'nickname']
-OPENID_ID_FIELD = 'openid_identifier'
-SESSION_NAME = 'openid'
-OPENID_GOOGLE_URL = 'https://www.google.com/accounts/o8/id'
-OPENID_YAHOO_URL = 'http://yahoo.com'
+AX_ATTRS = AX_SCHEMA_ATTRS + OLD_AX_ATTRS
+SREG_ATTR = ['email', 'fullname', 'nickname']
+OPENID_ID_FIELD = 'openid_identifier'
+SESSION_NAME = 'openid'
+OPENID_GOOGLE_URL = 'https://www.google.com/accounts/o8/id'
+OPENID_YAHOO_URL = 'http://yahoo.com'
+OPENID_LJ_URL = 'http://%s.livejournal.com'
+OPENID_LJ_USER_FIELD = 'openid_lj_user'
\ No newline at end of file
from django.contrib.auth.decorators import login_required
from .auth import TwitterAuth, FacebookAuth, OpenIdAuth, GoogleAuth, \
- YahooAuth, OrkutAuth
+ YahooAuth, LiveJournalAuth, OrkutAuth
# Authentication backends
'facebook': FacebookAuth,
'google': GoogleAuth,
'yahoo': YahooAuth,
+ 'lj': LiveJournalAuth,
'openid': OpenIdAuth,
'orkut': OrkutAuth,
}