/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.security.web.auth; import java.util.ArrayList; import java.util.List; import org.geoserver.security.RequestFilterChain; import org.geoserver.security.VariableFilterChain; import org.geoserver.security.config.SecurityManagerConfig; import org.geoserver.web.data.layergroup.LayerGroupEntry; import org.geoserver.web.wicket.GeoServerDataProvider; import org.geoserver.web.wicket.GeoServerDataProvider.Property; import org.geoserver.web.wicket.GeoServerDataProvider.PropertyPlaceholder; import org.springframework.util.StringUtils; /** * Provider for {@link RequestFilterChain} objects * * @author Christian Mueller */ public class SecurityFilterChainProvider extends GeoServerDataProvider<RequestFilterChain> { SecurityManagerConfig config; public SecurityFilterChainProvider(SecurityManagerConfig config) { this.config=config; } private static final long serialVersionUID = 1L; /** name of the config */ public static final Property<RequestFilterChain> NAME = new BeanProperty<RequestFilterChain>("name", "name"); public static Property<RequestFilterChain> POSITION = new PropertyPlaceholder<RequestFilterChain>( "position" ); public static Property<RequestFilterChain> REMOVE = new PropertyPlaceholder<RequestFilterChain>( "remove" ); public static final Property<RequestFilterChain> DISABLED = new BeanProperty<RequestFilterChain>("disabled", "disabled"); public static final Property<RequestFilterChain> ALLOWSESSIONCREATION = new BeanProperty<RequestFilterChain>("allowSessionCreation", "allowSessionCreation"); public static final Property<RequestFilterChain> REQUIRESSL = new BeanProperty<RequestFilterChain>("requireSSL", "requireSSL"); public static final Property<RequestFilterChain> MATCHHTTPMETHOD = new BeanProperty<RequestFilterChain>("matchHTTPMethod", "matchHTTPMethod"); public static final Property<RequestFilterChain> PATTERNS = new AbstractProperty<RequestFilterChain>("patternString") { @Override public Object getPropertyValue(RequestFilterChain item) { return StringUtils.collectionToCommaDelimitedString(item.getPatterns()); } }; public static final Property<RequestFilterChain> HTTPMETHODS = new AbstractProperty<RequestFilterChain>("httpMethods") { @Override public Object getPropertyValue(RequestFilterChain item) { return StringUtils.collectionToCommaDelimitedString(item.getHttpMethods()); } }; public static final Property<RequestFilterChain> HASROLEFILTER = new AbstractProperty<RequestFilterChain>("hasRoleFilter") { @Override public Object getPropertyValue(RequestFilterChain item) { return StringUtils.hasLength( item.getRoleFilterName()); } }; @Override protected List<Property<RequestFilterChain>> getProperties() { List<Property<RequestFilterChain>> result = new ArrayList<Property<RequestFilterChain>>(); result.add(POSITION); result.add(NAME); result.add(PATTERNS); result.add(MATCHHTTPMETHOD); result.add(HTTPMETHODS); result.add(DISABLED); result.add(ALLOWSESSIONCREATION); result.add(REQUIRESSL); result.add(HASROLEFILTER); result.add(REMOVE); return result; } @Override protected List<RequestFilterChain> getItems() { return config.getFilterChain().getRequestChains(); } }