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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
#!/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):
loader = PluginLoader(LoadExtensions, FACILITY, 'OpenidExtension')
self.plugins = loader.get_plugin_data()
available = self.plugins['available'].keys()
self._debug('Available Extensions: %s' % str(available))
def enable(self, enabled):
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 available(self):
available = self.plugins['available']
if available is None:
available = dict()
return available
|