X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=blobdiff_plain;f=ipsilon%2Fproviders%2Fopenidp.py;h=8f745784211fbbb2bcdbf837f4043e4f1532dadd;hp=996d90533812ff7a00110934675c117fbd5e007b;hb=485baf6ee7a315d1af1086fe5b5da8cff6c4ba37;hpb=45cb73a21a90084818c3057e362ef9459f1600f3 diff --git a/ipsilon/providers/openidp.py b/ipsilon/providers/openidp.py index 996d905..8f74578 100644 --- a/ipsilon/providers/openidp.py +++ b/ipsilon/providers/openidp.py @@ -1,8 +1,8 @@ -# Copyright (C) 2014 Ipsilon project Contributors, for licensee see COPYING +# Copyright (C) 2014 Ipsilon project Contributors, for license see COPYING from __future__ import absolute_import -from ipsilon.providers.common import ProviderBase +from ipsilon.providers.common import ProviderBase, ProviderInstaller from ipsilon.providers.openid.store import OpenIDStore from ipsilon.providers.openid.auth import OpenID from ipsilon.providers.openid.extensions.common import LoadExtensions @@ -22,8 +22,6 @@ class IdpProvider(ProviderBase): self.server = None self.basepath = None self.extensions = LoadExtensions() - print self.extensions.available() - print self.extensions.available().keys() self.description = """ Provides OpenID 2.0 authentication infrastructure. """ @@ -55,6 +53,14 @@ Provides OpenID 2.0 authentication infrastructure. """ 'enabled extensions', 'Choose the extensions to enable', self.extensions.available().keys()), + pconfig.MappingList( + 'default attribute mapping', + 'Defines how to map attributes before calling extensions', + [['*', '*']]), + pconfig.ComplexList( + 'default allowed attributes', + 'Defines a list of allowed attributes, applied after mapping', + ['*']), ) @property @@ -89,6 +95,14 @@ Provides OpenID 2.0 authentication infrastructure. """ def enabled_extensions(self): return self.get_config_value('enabled extensions') + @property + def default_attribute_mapping(self): + return self.get_config_value('default attribute mapping') + + @property + def default_allowed_attributes(self): + return self.get_config_value('default allowed attributes') + def get_tree(self, site): self.init_idp() self.page = OpenID(site, self) @@ -117,18 +131,22 @@ Provides OpenID 2.0 authentication infrastructure. """ self.extensions.enable(self._config['enabled extensions'].get_value()) -class Installer(object): +class Installer(ProviderInstaller): def __init__(self, *pargs): + super(Installer, self).__init__() self.name = 'openid' - self.ptype = 'provider' self.pargs = pargs def install_args(self, group): group.add_argument('--openid', choices=['yes', 'no'], default='yes', help='Configure OpenID Provider') + group.add_argument('--openid-dburi', + help='OpenID database URI') + group.add_argument('--openid-extensions', default='', + help='List of OpenID Extensions to enable') - def configure(self, opts): + def configure(self, opts, changes): if opts['openid'] != 'yes': return @@ -144,7 +162,11 @@ class Installer(object): po.wipe_data() po.wipe_config_values() config = {'endpoint url': url, - 'identity_url_template': '%sid/%%(username)s' % url} + 'identity url template': '%sid/%%(username)s' % url, + 'database url': opts['openid_dburi'] or + opts['database_url'] % { + 'datadir': opts['data_dir'], 'dbname': 'openid'}, + 'enabled extensions': opts['openid_extensions']} po.save_plugin_config(config) # Update global config to add login plugin