/lib/galaxy/web/framework/openid_manager.py

https://bitbucket.org/cistrome/cistrome-harvard/ · Python · 53 lines · 43 code · 6 blank · 4 comment · 5 complexity · 92cdec79f1b2a7b2c16660480908c95b MD5 · raw file

  1. """
  2. Manage the OpenID consumer and related data stores.
  3. """
  4. import os, pickle, logging
  5. from galaxy import eggs
  6. eggs.require( 'python-openid' )
  7. import openid
  8. from openid import oidutil
  9. from openid.store import filestore
  10. from openid.consumer import consumer
  11. from openid.extensions import sreg
  12. log = logging.getLogger( __name__ )
  13. def oidlog( message, level=0 ):
  14. log.debug( message )
  15. oidutil.log = oidlog
  16. class OpenIDManager( object ):
  17. def __init__( self, cache_path ):
  18. self.session_path = os.path.join( cache_path, 'session' )
  19. self.store_path = os.path.join( cache_path, 'store' )
  20. for dir in self.session_path, self.store_path:
  21. if not os.path.exists( dir ):
  22. os.makedirs( dir )
  23. self.store = filestore.FileOpenIDStore( self.store_path )
  24. def get_session( self, trans ):
  25. session_file = os.path.join( self.session_path, str( trans.galaxy_session.id ) )
  26. if not os.path.exists( session_file ):
  27. pickle.dump( dict(), open( session_file, 'w' ) )
  28. return pickle.load( open( session_file ) )
  29. def persist_session( self, trans, oidconsumer ):
  30. session_file = os.path.join( self.session_path, str( trans.galaxy_session.id ) )
  31. pickle.dump( oidconsumer.session, open( session_file, 'w' ) )
  32. def get_consumer( self, trans ):
  33. return consumer.Consumer( self.get_session( trans ), self.store )
  34. def add_sreg( self, trans, request, required=None, optional=None ):
  35. if required is None:
  36. required = []
  37. if optional is None:
  38. optional = []
  39. sreg_request = sreg.SRegRequest( required=required, optional=optional )
  40. request.addExtension( sreg_request )
  41. def get_sreg( self, info ):
  42. return sreg.SRegResponse.fromSuccessResponse( info )
  43. # so I don't have to expose all of openid.consumer.consumer
  44. FAILURE = consumer.FAILURE
  45. SUCCESS = consumer.SUCCESS
  46. CANCEL = consumer.CANCEL
  47. SETUP_NEEDED = consumer.SETUP_NEEDED