Package org.geoserver.security.web.role

Source Code of org.geoserver.security.web.role.EditRolePage

/* (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.role;

import java.io.IOException;

import org.geoserver.security.GeoServerRoleStore;
import org.geoserver.security.impl.GeoServerRole;
import org.geoserver.security.validation.RoleStoreValidationWrapper;

/**
* Page for editing a  {@link GeoServerRole} object
*
* @author christian
*
*/
public class EditRolePage extends AbstractRolePage {

    public EditRolePage(String roleServiceName,GeoServerRole role) {
        // parent role name not known at this moment, parent
        // constructor will do the job
        super(roleServiceName, role);
       
        get("form:name").setEnabled(false);

        // do we have a personalized role?
        if (role.getUserName()!=null ) {
            get("form:properties").setEnabled(false);
            get("form:parent").setEnabled(false);
            get("form:save").setEnabled(false);
        }
    }

    @Override
    protected void onFormSubmit(GeoServerRole updated) throws IOException{
       
        if (hasRoleStore(roleServiceName)==false) {
            throw new RuntimeException("Invalid workflow, cannot store in a read only role service");
        }

        GeoServerRoleStore store=null;
        try {
            store = new RoleStoreValidationWrapper(getRoleStore(roleServiceName));

            GeoServerRole role = store.getRoleByName(updated.getAuthority());

            role.getProperties().clear();
            role.getProperties().putAll(updated.getProperties());
            store.updateRole(role);

            String parentRoleName = get("form:parent").getDefaultModelObjectAsString();
            if (parentRoleName != null) {
                GeoServerRole parentRole = store.getRoleByName(parentRoleName);
                store.setParentRole(role, parentRole);
            }

            store.store();
        } catch (IOException ex) {
            try {store.load(); } catch (IOException ex2) {};
            throw ex;
        }
    }

}
TOP

Related Classes of org.geoserver.security.web.role.EditRolePage

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.