/* (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.user; import java.io.IOException; import org.geoserver.security.GeoServerRoleStore; import org.geoserver.security.GeoServerUserGroupStore; import org.geoserver.security.impl.GeoServerRole; import org.geoserver.security.impl.GeoServerUser; import org.geoserver.security.impl.GeoServerUserGroup; import org.geoserver.security.validation.PasswordPolicyException; import org.geoserver.security.validation.RoleStoreValidationWrapper; import org.geoserver.security.validation.UserGroupStoreValidationWrapper; /** * Allows creation of a new user in users.properties */ public class NewUserPage extends AbstractUserPage { public NewUserPage(String userGroupServiceName) { super(userGroupServiceName, new GeoServerUser("")); if (hasUserGroupStore(userGroupServiceName)==false) { throw new IllegalStateException("New user not possible for read only service"); } } @Override protected void onFormSubmit(GeoServerUser user) throws IOException,PasswordPolicyException { GeoServerUserGroupStore ugStore = new UserGroupStoreValidationWrapper(getUserGroupStore(ugServiceName)); try { ugStore.addUser(user); for (GeoServerUserGroup group : userGroupPalette.getSelectedGroups()) { ugStore.associateUserToGroup(user, group); } ugStore.store(); } catch (IOException ex) { try {ugStore.load(); } catch (IOException ex2) {}; throw ex; } catch (PasswordPolicyException ex) { try {ugStore.load(); } catch (IOException ex2) {}; throw ex; } GeoServerRoleStore gaStore = null; try { if (hasRoleStore(getSecurityManager().getActiveRoleService().getName())) { gaStore = getRoleStore(getSecurityManager().getActiveRoleService().getName()); gaStore = new RoleStoreValidationWrapper(gaStore); for (GeoServerRole role : rolePalette.getSelectedRoles()) { gaStore.associateRoleToUser(role, user.getUsername()); } gaStore.store(); } } catch (IOException ex) { try {gaStore.load(); } catch (IOException ex2) {}; throw ex; } } }