Mercurial > universal-identity-relyer
view openid_experiment.py @ 14:b8c699d8e613
google_client now calls onsuccess cb whenever openid itself was successful (even though the user may have 'cancelled' the auth).
author | Atul Varma <avarma@mozilla.com> |
---|---|
date | Sun, 13 Jun 2010 18:20:06 -0700 |
parents | 775e00932285 |
children |
line wrap: on
line source
class TrivialSession(object): def __init__(self, session_id): self.id = session_id self.data = {} def newkey(numbits=128): return ''.join('%x' % ord(x) for x in os.urandom(numbits/8)) class TrivialSessions(object): def __init__(self): self.sessions = {} def create(self): sid = newkey() while sid in self: sid = newkey() session = TrivialSession(sid) self.sessions[sid] = session return session def __contains__(self, session_id): return session_id in self.sessions def __getitem__(self, session_id): return self.sessions[session_id] def __delitem__(self, session_id): del self.sessions[session_id] def onsuccess(environ, start_response): start_response('200 OK', [('Content-Type', 'text/plain')]) if environ['openid.status'] == "success": return ["Hi %s." % environ['openid.email']] return ["alas, %s." % environ['openid.status']] if __name__ == '__main__': import os from wsgiref.simple_server import make_server from openid.store.filestore import FileOpenIDStore from openid.consumer.consumer import Consumer from google_client import GoogleOpenIdClientApp storepath = os.path.abspath(os.path.join('storage', 'openid')) if not os.path.exists('storage'): os.mkdir('storage') if not os.path.exists(storepath): os.mkdir(storepath) google = GoogleOpenIdClientApp( sessions=TrivialSessions(), store=FileOpenIDStore(storepath), onsuccess=onsuccess, make_consumer=Consumer ) port = 8000 httpd = make_server('', port, google) print 'serving on port %d' % port httpd.serve_forever()