Package org.geoserver.security.web.auth

Source Code of org.geoserver.security.web.auth.SecurityVariableFilterChainPage

/* (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.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.geoserver.platform.GeoServerExtensions;
import org.geoserver.security.GeoServerSecurityManager;
import org.geoserver.security.VariableFilterChain;
import org.geoserver.security.config.SecurityManagerConfig;
import org.geoserver.security.filter.GeoServerExceptionTranslationFilter;
import org.geoserver.security.filter.GeoServerSecurityInterceptorFilter;
import org.geoserver.web.wicket.HelpLink;

/**
* Class for configuration panels of {@link VariableFilterChain} objects
*
* @author christan
*
*/
public  class SecurityVariableFilterChainPage
    extends SecurityFilterChainPage {

    private static final long serialVersionUID = 1L;

    /**
     * logger
     */
   

    protected AuthFilterChainPalette palette;
   
          

    public SecurityVariableFilterChainPage( VariableFilterChain chain,
            SecurityManagerConfig secMgrConfig,
            boolean isNew) {
       
        VariableFilterChainWrapper wrapper = new VariableFilterChainWrapper(chain);
       
        Form<VariableFilterChainWrapper> theForm  = new Form<VariableFilterChainWrapper>("form",new
                CompoundPropertyModel<VariableFilterChainWrapper>(wrapper));
               
        super.initialize(chain, secMgrConfig, isNew, theForm, wrapper);

        List<String> filterNames=new ArrayList<String>();
        try
            filterNames.addAll(getSecurityManager().listFilters(GeoServerExceptionTranslationFilter.class));
            for (GeoServerExceptionTranslationFilter filter : GeoServerExtensions.extensions(GeoServerExceptionTranslationFilter.class)){
                filterNames.add(filter.getName());
            }
            form.add(new DropDownChoice<String>("exceptionTranslationName",
                    new PropertyModel<String>(chainWrapper.getChain(), "exceptionTranslationName"),
                    filterNames));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
       
        filterNames=new ArrayList<String>();
        try
            filterNames.addAll(getSecurityManager().listFilters(GeoServerSecurityInterceptorFilter.class));
            for (GeoServerSecurityInterceptorFilter filter :GeoServerExtensions.extensions(GeoServerSecurityInterceptorFilter.class)){
                filterNames.add(filter.getName());
            }
            form.add(new DropDownChoice<String>("interceptorName",
                    new PropertyModel<String>(chainWrapper.getChain(), "interceptorName"),
                    filterNames));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
       
        form.add(palette=new AuthFilterChainPalette("authFilterChain", new AuthFilterNamesModel(getVariableFilterChainWrapper())));           
        palette.setOutputMarkupId(true);
        palette.setChain(getVariableFilterChainWrapper().getVariableFilterChain());

       
        form.add(new HelpLink("chainConfigFilterHelp").setDialog(dialog));
       
       
    }

    VariableFilterChainWrapper getVariableFilterChainWrapper() {
        return (VariableFilterChainWrapper) chainWrapper;
    }

           
    class AuthFilterNamesModel implements IModel<List<String>> {

        private static final long serialVersionUID = 1L;
        VariableFilterChainWrapper chainModel;

        AuthFilterNamesModel(VariableFilterChainWrapper chainModel) {
            this.chainModel = chainModel;
        }

        @Override
        public List<String> getObject() {
           
            GeoServerSecurityManager secMgr = getSecurityManager();
            List<String> filters = new ArrayList<String>(chainModel.getChain().getFilterNames());
            try {
                filters.retainAll(chainModel.getVariableFilterChain().listFilterCandidates(secMgr));
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            return filters;
        }

        @Override
        public void setObject(List<String> object) {
            chainModel.getChain().setFilterNames(object);
        }
       
        @Override
        public void detach() {
            //chainModel.detach();
        }
    }

}
TOP

Related Classes of org.geoserver.security.web.auth.SecurityVariableFilterChainPage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.