from openid.consumer.consumer import Consumer
from openid.extensions.sreg import SRegRequest, SRegResponse
from openid.store.filestore import FileOpenIDStore
+from openid.yadis.discover import DiscoveryFailure
from sqlalchemy.orm.exc import NoResultFound
-from pylons import request, response, session, tmpl_context as c, url, h
-from pylons.controllers.util import abort, redirect
+from pylons import request, response, session, tmpl_context as c, url
+from pylons.controllers.util import abort, redirect, redirect_to
from routes import url_for, request_config
from floof.lib.base import BaseController, render
+import floof.lib.helpers as h
from floof.model.users import IdentityURL, User
log = logging.getLogger(__name__)
openid_store = FileOpenIDStore('/var/tmp')
def login(self):
+ c.bogus_identity_url = request.params.get('bogus_identity_url', None)
return render('/account/login.mako')
def login_begin(self):
"""Step one of logging in with OpenID; we redirect to the provider"""
+ identity_url = request.params['identity_url']
cons = Consumer(session=session, store=self.openid_store)
- auth_request = cons.begin(request.params['identity_url'])
+ try:
+ auth_request = cons.begin(identity_url)
+ except DiscoveryFailure:
+ redirect_to(controller='account', action='login',
+ bogus_identity_url=identity_url)
+
sreg_req = SRegRequest(optional=['nickname', 'email', 'dob', 'gender',
'country', 'language', 'timezone'])
auth_request.addExtension(sreg_req)