From 0bd1e309ac241b4e55ceb477b48aa95f80c6a1d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Bompard?= Date: Thu, 25 Mar 2021 18:53:12 +0100 Subject: [PATCH] Drop the fasjson plugin, we're using SSSd MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Aurélien Bompard --- ipsilon/info/infofasjson.py | 102 ------------------------------------ 1 file changed, 102 deletions(-) delete mode 100644 ipsilon/info/infofasjson.py diff --git a/ipsilon/info/infofasjson.py b/ipsilon/info/infofasjson.py deleted file mode 100644 index ddaa05d..0000000 --- a/ipsilon/info/infofasjson.py +++ /dev/null @@ -1,102 +0,0 @@ -from ipsilon.info.common import InfoProviderBase, InfoProviderInstaller -from ipsilon.util.plugin import PluginObject -from ipsilon.util.policy import Policy -from ipsilon.util import config as pconfig - -import fasjson_client - - -# For OpenID Connect: https://openid.net/specs/openid-connect-basic-1_0.html#StandardClaims -# For OpenID: https://openid.net/specs/openid-simple-registration-extension-1_0.html#response_format -fasjson_mapping = [ - ['email', 'email'], - ['username', 'nickname'], - ['username', 'preferred_username'], - ['timezone', 'zoneinfo'], - ['locale', 'locale'], - ['human_name', 'name'], - ['givenname', 'given_name'], - ['surname', 'family_name'], - ['ircnicks', 'ircnicks'], - ['gpgkeyids', 'gpg_keyids'], - ['groups', 'groups'], - ['agreements', 'agreements'], - # Plain OpenID (sreg) - ['timezone', 'timezone'], - ['human_name', 'fullname'], -] - - -class InfoProvider(InfoProviderBase): - - def __init__(self, *args): - super(InfoProvider, self).__init__(*args) - self.mapper = Policy(fasjson_mapping) - - self.name = 'fasjson' - self.description = """ -Info plugin that retrieves user data from FASJSON. """ - - self.new_config( - self.name, - pconfig.String( - 'FASJSON url', - 'The FASJSON Url.', - 'http://fasjson.tinystage.test/fasjson/'), - ) - - @property - def fasjson_url(self): - return self.get_config_value('FASJSON url') - - - def get_user_attrs(self, user): - try: - client = fasjson_client.Client(url=self.fasjson_url) - user_data = client.get_user(username=user).result - user_group_data = client.list_user_groups(username=user).result - user_agreements_data = client.list_user_agreements(username=user).result - except Exception as e: - self.error(f'FASJSON error: {e}') - return {} - - # assumption that first email is the default - user_data['email'] = user_data['emails'][0] if user_data['emails'] else None - - # add the groups to the user_data - user_data['groups'] = [ g['groupname'] for g in user_group_data] - - # add the agreements to the user_data - user_data['agreements'] = [ g['name'] for g in user_agreements_data] - - userattrs, extras = self.mapper.map_attributes(user_data) - self.debug(f'user_data: {user_data}') - self.debug(f'Userattrs: {userattrs}') - - return userattrs - - -class Installer(InfoProviderInstaller): - - def __init__(self, *pargs): - super(Installer, self).__init__() - self.name = 'fasjson' - self.pargs = pargs - - def install_args(self, group): - group.add_argument('--info-fasjson', choices=['yes', 'no'], default='no', - help='Configure FAS info') - - def configure(self, opts, changes): - if opts['info_fasjson'] != 'yes': - return - - # Add configuration data to database - po = PluginObject(*self.pargs) - po.name = 'fasjson' - po.wipe_data() - po.wipe_config_values() - - # Update global config to add login plugin - po.is_enabled = True - po.save_enabled_state()