summaryrefslogtreecommitdiffstats
path: root/ipsilon/providers/openid/extensions/common.py
diff options
context:
space:
mode:
authorPatrick Uiterwijk <puiterwijk@redhat.com>2014-10-06 19:12:13 +0200
committerPatrick Uiterwijk <puiterwijk@redhat.com>2014-10-24 18:02:21 +0200
commitf461a713ce28e434a34dca4e4d1abbfe255ef1ff (patch)
tree20e3167cfe3b28e8c7163e661fc757ffd8df228b /ipsilon/providers/openid/extensions/common.py
parentc6fab2542f52f6cca71c207c1925785971e51295 (diff)
downloadipsilon-f461a713ce28e434a34dca4e4d1abbfe255ef1ff.tar.gz
ipsilon-f461a713ce28e434a34dca4e4d1abbfe255ef1ff.tar.xz
ipsilon-f461a713ce28e434a34dca4e4d1abbfe255ef1ff.zip
Add OpenIDP Provider
This commit implements all the core functionality needed to expose an OpenID Identity Provider including a framework to dynamycally add extensions. Signed-off-by: Patrick Uiterwijk <puiterwijk@redhat.com> Signed-off-by: Simo Sorce <simo@redhat.com> Reviewed-by: Patrick Uiterwijk <puiterwijk@redhat.com>
Diffstat (limited to 'ipsilon/providers/openid/extensions/common.py')
-rwxr-xr-xipsilon/providers/openid/extensions/common.py67
1 files changed, 67 insertions, 0 deletions
diff --git a/ipsilon/providers/openid/extensions/common.py b/ipsilon/providers/openid/extensions/common.py
new file mode 100755
index 0000000..b75d394
--- /dev/null
+++ b/ipsilon/providers/openid/extensions/common.py
@@ -0,0 +1,67 @@
+#!/usr/bin/python
+#
+# Copyright (C) 2014 Ipsilon project Contributors, for licensee see COPYING
+
+from __future__ import absolute_import
+
+from ipsilon.providers.common import FACILITY
+from ipsilon.util.plugin import PluginLoader
+from ipsilon.util.log import Log
+
+
+class OpenidExtensionBase(Log):
+
+ def __init__(self, name=None):
+ self.name = name
+ self.enabled = False
+ self.type_uris = []
+
+ def _display(self, request, userdata):
+ raise NotImplementedError
+
+ def _response(self, request, userdata):
+ raise NotImplementedError
+
+ def get_type_uris(self):
+ if self.enabled:
+ return self.type_uris
+ return []
+
+ def get_display_data(self, request, userdata):
+ if self.enabled:
+ return self._display(request, userdata)
+ return {}
+
+ def get_response(self, request, userdata):
+ if self.enabled:
+ return self._response(request, userdata)
+ return None
+
+ def enable(self):
+ self.enabled = True
+
+ def disable(self):
+ self.enabled = False
+
+
+FACILITY = 'openid_extensions'
+
+
+class LoadExtensions(Log):
+
+ def __init__(self, enabled):
+ loader = PluginLoader(LoadExtensions, FACILITY, 'OpenidExtension')
+ self.plugins = loader.get_plugin_data()
+
+ available = self.plugins['available'].keys()
+ self._debug('Available Extensions: %s' % str(available))
+
+ for item in enabled:
+ if item not in self.plugins['available']:
+ self.debug('<%s> not available' % item)
+ continue
+ self.debug('Enable OpenId extension: %s' % item)
+ self.plugins['available'][item].enable()
+
+ def get_extensions(self):
+ return self.plugins['available']