Warning
This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for galaxy.web.framework.openid_manager
"""
Manage the OpenID consumer and related data stores.
"""
import logging
import os
import pickle
try:
from openid import oidutil
from openid.consumer import consumer
from openid.extensions import sreg
from openid.store import filestore
except ImportError:
oidutil = None
class FakeConsumer(object):
def __getattr__(x, y):
return None
consumer = FakeConsumer()
OPENID_IMPORT_MESSAGE = ('The Python openid package is required to use this '
'feature, please install it')
log = logging.getLogger(__name__)
if oidutil is not None:
oidutil.log = oidlog
[docs]class OpenIDManager(object):
[docs] def __init__(self, cache_path):
assert oidutil is not None, OPENID_IMPORT_MESSAGE
self.session_path = os.path.join(cache_path, 'session')
self.store_path = os.path.join(cache_path, 'store')
for dir in self.session_path, self.store_path:
if not os.path.exists(dir):
os.makedirs(dir)
self.store = filestore.FileOpenIDStore(self.store_path)
[docs] def get_session(self, trans):
session_file = os.path.join(self.session_path, str(trans.galaxy_session.id))
if not os.path.exists(session_file):
pickle.dump(dict(), open(session_file, 'w'))
return pickle.load(open(session_file))
[docs] def persist_session(self, trans, oidconsumer):
session_file = os.path.join(self.session_path, str(trans.galaxy_session.id))
pickle.dump(oidconsumer.session, open(session_file, 'w'))
[docs] def add_sreg(self, trans, request, required=None, optional=None):
if required is None:
required = []
if optional is None:
optional = []
sreg_request = sreg.SRegRequest(required=required, optional=optional)
request.addExtension(sreg_request)
# so I don't have to expose all of openid.consumer.consumer
FAILURE = consumer.FAILURE
SUCCESS = consumer.SUCCESS
CANCEL = consumer.CANCEL
SETUP_NEEDED = consumer.SETUP_NEEDED