def install(portal, reinstall=False): acl_users = getToolByName(portal, 'acl_users') # Put an apachepas multiplugin in the acl_users folder, if there isn't one: pluginId = _firstIdOfClass(acl_users, ApacheAuthPluginHandler) if not pluginId: addautousermakerplugin(acl_users) # Activate it: plugins = acl_users.plugins for interface in [IAuthenticationPlugin, IExtractionPlugin, IChallengePlugin]: try: plugins.activatePlugin(interface, pluginId) # plugins is a PluginRegistry except KeyError: continue while plugins.listPluginIds(IChallengePlugin)[0] != pluginId: plugins.movePluginsUp(IChallengePlugin, (pluginId,)) if reinstall: import pickle plugin = getattr(plugins, pluginId) #logger.info("plugin = %s" % repr(plugin)) # Get the configuration out of the property, and delete the property. try: prop = "\n".join(acl_users.getProperty('aum_config')) #logger.info("aum_config = %s" % repr(prop)) config = pickle.loads(prop) except Exception, err: logger.info("error getting config: %s of %r" % (str(err), repr(err))) try: prop = "\n".join(acl_users.getProperty('aum_mappings')) #logger.info("aum_mappings = %s" % repr(prop)) mappings = pickle.loads(prop) except Exception, err: logger.info("error getting mappings: %s of %r" % (str(err), repr(err)))
def install(portal, reinstall=False): acl_users = getToolByName(portal, 'acl_users') # Put a ShibbolethPermisssion in the acl_users folder, if there isn't one: pluginId = _firstIdOfClass(acl_users, ShibbolethPermissionsHandler) if not pluginId: manage_addShibbolethPermissions(acl_users, 'ShibbolethPermissions', 'ShibbolethPermissions Plugin') portal_setup = getToolByName(portal, 'portal_setup') portal_setup.runAllImportStepsFromProfile( "profile-Products.ShibbolethPermissions:default", purge_old=False) # Now restore the configuration if reinstall: import pickle plugin = getattr(acl_users.plugins, pluginId) # Get the configuration out of the property, and delete the property. prop = "\n".join(acl_users.getProperty('sp_config')) config = pickle.loads(prop) roles = acl_users.portal_role_manager.listRoleIds() logger.info("roles = %s" % str(roles)) for path in config.iterkeys(): for entry in config[path]: thisRole = [role for role in entry['_roles'] if role in roles] thisParam = entry del thisParam['_roles'] plugin.addLocalRoles(path, thisParam, thisRole) if acl_users.hasProperty('sp_config'): acl_users.manage_delProperties(['sp_config'])
def install(portal, reinstall=False): acl_users = getToolByName(portal, 'acl_users') # Put a ShibbolethPermisssion in the acl_users folder, if there isn't one: pluginId = _firstIdOfClass(acl_users, ShibbolethPermissionsHandler) if not pluginId: manage_addShibbolethPermissions( acl_users, 'ShibbolethPermissions', 'ShibbolethPermissions Plugin') portal_setup = getToolByName(portal, 'portal_setup') portal_setup.runAllImportStepsFromProfile( "profile-Products.ShibbolethPermissions:default", purge_old=False) # Now restore the configuration if reinstall: import pickle plugin = getattr(acl_users.plugins, pluginId) # Get the configuration out of the property, and delete the property. prop = "\n".join(acl_users.getProperty('sp_config')) config = pickle.loads(prop) roles = acl_users.portal_role_manager.listRoleIds() logger.info("roles = %s" % str(roles)) for path in config.iterkeys(): for entry in config[path]: thisRole = [role for role in entry['_roles'] if role in roles] thisParam = entry del thisParam['_roles'] plugin.addLocalRoles(path, thisParam, thisRole) if acl_users.hasProperty('sp_config'): acl_users.manage_delProperties(['sp_config'])
def install(portal, reinstall=False): acl_users = getToolByName(portal, 'acl_users') # Put an apachepas multiplugin in the acl_users folder, if there isn't one: pluginId = _firstIdOfClass(acl_users, ApacheAuthPluginHandler) if not pluginId: acl_users._setObject(PLUGIN_ID, ApacheAuthPluginHandler(PLUGIN_ID)) # Activate it: plugins = acl_users.plugins for interface in [ IAuthenticationPlugin, IExtractionPlugin, IChallengePlugin ]: try: plugins.activatePlugin(interface, pluginId) # plugins is a PluginRegistry except KeyError: continue while plugins.listPluginIds(IChallengePlugin)[0] != pluginId: plugins.movePluginsUp(IChallengePlugin, (pluginId, )) if reinstall: import pickle plugin = getattr(plugins, pluginId) #logger.info("plugin = %s" % repr(plugin)) # Get the configuration out of the property, and delete the property. try: prop = "\n".join(acl_users.getProperty('aum_config')) #logger.info("aum_config = %s" % repr(prop)) config = pickle.loads(prop) except Exception, err: logger.info("error getting config: %s of %r" % (str(err), repr(err))) try: prop = "\n".join(acl_users.getProperty('aum_mappings')) #logger.info("aum_mappings = %s" % repr(prop)) mappings = pickle.loads(prop) except Exception, err: logger.info("error getting mappings: %s of %r" % (str(err), repr(err)))
try: val = config[prop['id']]['value'] if prop['type'] == 'lines': val = "\n".join(val) #logger.info("setting %s to %s" % (prop['id'], repr(val))) if config[prop['id']]['type'] == prop['type']: plugin.manage_changeProperties({prop['id']: val}) elif prop['type'] == 'int': try: plugin.manage_changeProperties({prop['id']: int(val)}) except TypeError: pass else: plugin.manage_changeProperties({prop['id']: str(val)}) except Exception, err: logger.info("error in install: %s" % str(err)) # Now restore the mappings. #logger.info("settings mappings to %s" % str(mappings)) plugin.putMappings(mappings) for ii in ('aum_config', 'aum_mappings'): try: acl_users.manage_delProperties([ii]) except: pass def uninstall(portal, reinstall=False): acl_users = getToolByName(portal, 'acl_users') pluginId = _firstIdOfClass(acl_users, ApacheAuthPluginHandler) if pluginId: # only if the plugin is installed if reinstall: # only if install() above is going to run next import pickle
val = config[prop['id']]['value'] if prop['type'] == 'lines': val = "\n".join(val) #logger.info("setting %s to %s" % (prop['id'], repr(val))) if config[prop['id']]['type'] == prop['type']: plugin.manage_changeProperties({prop['id']: val}) elif prop['type'] == 'int': try: plugin.manage_changeProperties( {prop['id']: int(val)}) except TypeError: pass else: plugin.manage_changeProperties({prop['id']: str(val)}) except Exception, err: logger.info("error in install: %s" % str(err)) # Now restore the mappings. #logger.info("settings mappings to %s" % str(mappings)) plugin.putMappings(mappings) for ii in ('aum_config', 'aum_mappings'): try: acl_users.manage_delProperties([ii]) except: pass memberdata = getToolByName(portal, 'portal_memberdata') if LAST_UPDATE_USER_PROPERTY_KEY not in memberdata.propertyIds(): memberdata.manage_addProperty(id=LAST_UPDATE_USER_PROPERTY_KEY, type='float', value=0.0)