1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | # This requires python-openid 2.0.1 (or greater, I guess) from turnthepage.lib.base import * from openid.consumer.consumer import Consumer, SUCCESS, FAILURE, DiscoveryFailure class LoginController(BaseController): def __before__(self): self.openid_session = session.get("openid_session", {}) @dispatch_on(POST="login_POST") def login(self): return render_response('/login/form.mako') def login_POST(self): self.consumer = Consumer(self.openid_session, g.openid_store) openid = request.params.get('openid', None) if openid is None: return render_response('/login/form.mako') try: authrequest = self.consumer.begin(openid) except DiscoveryFailure, e: return Response("hello world") redirecturl = authrequest.redirectURL(h.url_for('front', qualified=True), return_to=h.url_for('verified', qualified=True), immediate=False) session['openid_session'] = self.openid_session session.save() return redirect_to(redirecturl) def verified(self): self.consumer = Consumer(self.openid_session, g.openid_store) info = self.consumer.complete(request.params, h.url_for('verified', qualified=True)) if info.status == SUCCESS: user = model.User.get(info.identity_url) if user is None: user = model.User(info.identity_url) user.flush() user.updatelastlogin() user.flush() del session['openid_session'] session['openid'] = str(user.openid) session.save() return redirect_to('front') else: raise Exception @dispatch_on(POST="logout_POST") def logout(self): return render_response('/login/logout.mako') def logout_POST(self): del session['openid'] session.save() return redirect_to('front') |
Powered by Pylons - Contact Administrators
Comments (0)
You must login before you can comment.