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)))
Esempio n. 2
0
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)