taylor 01/07/29 23:20:49 Added: src/java/org/apache/jetspeed/modules/actions/portlets/security GroupBrowserAction.java GroupUpdateAction.java Log: - added Group Browser and editor portlets to security admin Revision Changes Path 1.1 jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/portlets/security/GroupBrowserAction.java Index: GroupBrowserAction.java =================================================================== /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2000-2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and * "Apache Jetspeed" must not be used to endorse or promote products * derived from this software without prior written permission. For * written permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" or * "Apache Jetspeed", nor may "Apache" appear in their name, without * prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package org.apache.jetspeed.modules.actions.portlets.security; // velocity import org.apache.velocity.context.Context; // turbine util import org.apache.turbine.util.Log; import org.apache.turbine.util.RunData; import org.apache.turbine.util.StringUtils; import org.apache.turbine.util.DynamicURI; // turbine om import org.apache.turbine.om.security.User; import org.apache.turbine.om.security.Group; // turbine security import org.apache.turbine.util.security.EntityExistsException; import org.apache.turbine.util.security.UnknownEntityException; import org.apache.turbine.util.security.GroupSet; import org.apache.turbine.util.db.Criteria; // jetspeed services import org.apache.jetspeed.services.JetspeedSecurity; import org.apache.jetspeed.services.resources.JetspeedResources; // jetspeed velocity import org.apache.jetspeed.modules.actions.portlets.VelocityPortletAction; import org.apache.jetspeed.portal.portlets.VelocityPortlet; /** * This action sets up the template context for browsing of security groups in the Turbine database. * * @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a> */ public class GroupBrowserAction extends VelocityPortletAction { /** * Build the maximized state content for this portlet. (Same as normal state). * * @param portlet The velocity-based portlet that is being built. * @param context The velocity context for this request. * @param rundata The turbine rundata context for this request. */ protected void buildMaximizedContext( VelocityPortlet portlet, Context context, RunData rundata ) { buildNormalContext( portlet, context, rundata); } /** * Build the configure state content for this portlet. * TODO: we could configure this portlet with configurable skins, etc.. * * @param portlet The velocity-based portlet that is being built. * @param context The velocity context for this request. * @param rundata The turbine rundata context for this request. */ protected void buildConfigureContext( VelocityPortlet portlet, Context context, RunData rundata ) { buildNormalContext( portlet, context, rundata); } /** * Build the normal state content for this portlet. * * @param portlet The velocity-based portlet that is being built. * @param context The velocity context for this request. * @param rundata The turbine rundata context for this request. */ protected void buildNormalContext( VelocityPortlet portlet, Context context, RunData rundata ) { try { Criteria criteria = new Criteria(); GroupSet groups = JetspeedSecurity.getGroups(criteria); context.put(SecurityConstants.CONTEXT_GROUPS, groups.getGroupsArray()); } catch (Exception e) { // log the error msg Log.error(e); rundata.setMessage("Error in Jetspeed Group Security: " + e.toString()); rundata.setStackTrace(StringUtils.stackTrace(e), e); rundata.setScreenTemplate("Error.vm"); } } } 1.1 jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/portlets/security/GroupUpdateAction.java Index: GroupUpdateAction.java =================================================================== /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2000-2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and * "Apache Jetspeed" must not be used to endorse or promote products * derived from this software without prior written permission. For * written permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" or * "Apache Jetspeed", nor may "Apache" appear in their name, without * prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package org.apache.jetspeed.modules.actions.portlets.security; // velocity import org.apache.velocity.context.Context; // turbine util import org.apache.turbine.util.Log; import org.apache.turbine.util.RunData; import org.apache.turbine.util.StringUtils; import org.apache.turbine.util.DynamicURI; // turbine om import org.apache.turbine.om.security.Group; import org.apache.turbine.om.security.User; // turbine security import org.apache.turbine.util.security.EntityExistsException; // jetspeed services import org.apache.jetspeed.services.JetspeedSecurity; import org.apache.jetspeed.services.resources.JetspeedResources; // jetspeed velocity import org.apache.jetspeed.modules.actions.portlets.VelocityPortletAction; import org.apache.jetspeed.portal.portlets.VelocityPortlet; /** * This action sets up the template context for editing security groups in the Turbine database. * * @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a> */ public class GroupUpdateAction extends VelocityPortletAction { private static final String TEMP_GROUP = "tempGroup"; /** * Build the maximized state content for this portlet. (Same as normal state). * * @param portlet The velocity-based portlet that is being built. * @param context The velocity context for this request. * @param rundata The turbine rundata context for this request. */ protected void buildMaximizedContext( VelocityPortlet portlet, Context context, RunData rundata ) { buildNormalContext( portlet, context, rundata); } /** * Build the configure state content for this portlet. * TODO: we could configure this portlet with configurable skins, etc.. * * @param portlet The velocity-based portlet that is being built. * @param context The velocity context for this request. * @param rundata The turbine rundata context for this request. */ protected void buildConfigureContext( VelocityPortlet portlet, Context context, RunData rundata ) { buildNormalContext( portlet, context, rundata); } /** * Build the normal state content for this portlet. * * @param portlet The velocity-based portlet that is being built. * @param context The velocity context for this request. * @param rundata The turbine rundata context for this request. */ protected void buildNormalContext( VelocityPortlet portlet, Context context, RunData rundata ) { try { Group group = null; /* * Grab the mode for the form. */ String mode = rundata.getParameters().getString(SecurityConstants.PARAM_MODE); // if we are updating or deleting - put the name in the context // if (mode != null && (mode.equals(SecurityConstants.PARAM_MODE_UPDATE) || mode.equals(SecurityConstants.PARAM_MODE_DELETE))) { // get the primary key and put the object in the context String groupname = rundata.getParameters().getString(SecurityConstants.PARAM_ENTITY_ID); group = JetspeedSecurity.getGroup(groupname); context.put(SecurityConstants.CONTEXT_GROUP, group); } // // if there was an error, display the message // String msgid = rundata.getParameters().getString(SecurityConstants.PARAM_MSGID); if (msgid != null) { int id = Integer.parseInt(msgid); if (id < SecurityConstants.MESSAGES.length) context.put(SecurityConstants.PARAM_MSG, SecurityConstants.MESSAGES[id]); // get the bad entered data and put it back for convenient update Group tempGroup = (Group)rundata.getUser().getTemp(TEMP_GROUP); if (tempGroup != null) context.put(SecurityConstants.CONTEXT_GROUP, tempGroup); } context.put(SecurityConstants.PARAM_MODE, mode); } catch (Exception e) { Log.error(e); rundata.setMessage("Error in Jetspeed User Security: " + e.toString()); rundata.setStackTrace(StringUtils.stackTrace(e), e); rundata.setScreenTemplate("Error.vm"); } } /** * Database Insert Action for Security Groups. Performs inserts into security database. * * @param rundata The turbine rundata context for this request. * @param context The velocity context for this request. */ public void doInsert(RunData rundata, Context context) throws Exception { Group group = null; try { // // validate that its not an 'blank' groupname -- not allowed // String name = rundata.getParameters().getString("name"); if (name == null || name.trim().length() == 0) { DynamicURI duri = new DynamicURI (rundata); duri.addPathInfo(JetspeedResources.PATH_PANEL_KEY, SecurityConstants.PANEID_GROUP_UPDATE); duri.addPathInfo(SecurityConstants.PARAM_MSGID, SecurityConstants.MID_INVALID_ENTITY_NAME); rundata.getResponse().sendRedirect(duri.toString()); rundata.getUser().setTemp(TEMP_GROUP, null); return; } // // generate a new group // group = JetspeedSecurity.getNewGroup(name); // // add the group /// JetspeedSecurity.addGroup(group); // // success -- bring user back to group browser // DynamicURI duri = new DynamicURI (rundata); duri.addPathInfo(JetspeedResources.PATH_PANEL_KEY, SecurityConstants.PANEID_GROUP_BROWSER); rundata.getResponse().sendRedirect(duri.toString()); } catch (EntityExistsException e) { // log the error msg Log.error(e); // // dup key found - display error message - bring back to same screen // DynamicURI duri = new DynamicURI (rundata); duri.addPathInfo(JetspeedResources.PATH_PANEL_KEY, SecurityConstants.PANEID_GROUP_UPDATE); duri.addPathInfo(SecurityConstants.PARAM_MSGID, SecurityConstants.MID_ENTITY_ALREADY_EXISTS); rundata.getResponse().sendRedirect(duri.toString()); // save values that user just entered so they don't have to re-enter if (group != null) rundata.getUser().setTemp(TEMP_GROUP, group); } } /** * Database Update Action for Security Groups. Performs updates into security database. * * @param rundata The turbine rundata context for this request. * @param context The velocity context for this request. */ public void doUpdate(RunData rundata, Context context) throws Exception { Group group = null; try { // // get the group object from the selected group entry in the browser // group = JetspeedSecurity.getGroup( rundata.getParameters().getString(SecurityConstants.PARAM_ENTITY_ID)); // // update the group in the database // JetspeedSecurity.saveGroup(group); // // success -- bring user back to group browser // DynamicURI duri = new DynamicURI (rundata); duri.addPathInfo(JetspeedResources.PATH_PANEL_KEY, SecurityConstants.PANEID_GROUP_BROWSER); rundata.getResponse().sendRedirect(duri.toString()); } catch (Exception e) { // log the error msg Log.error(e); // // error on update - display error message // DynamicURI duri = new DynamicURI (rundata); duri.addPathInfo(JetspeedResources.PATH_PANEL_KEY, SecurityConstants.PANEID_GROUP_UPDATE); duri.addPathInfo(SecurityConstants.PARAM_MSGID, SecurityConstants.MID_UPDATE_FAILED); if (group != null) duri.addPathInfo(SecurityConstants.PARAM_ENTITY_ID, group.getName()); duri.addQueryData(SecurityConstants.PARAM_MODE, SecurityConstants.PARAM_MODE_UPDATE); rundata.getResponse().sendRedirect(duri.toString()); // save values that user just entered so they don't have to re-enter if (group != null) rundata.getUser().setTemp(TEMP_GROUP, group); } } /** * Database Delete Action for Security Groups. Performs deletes into security database. * * @param rundata The turbine rundata context for this request. * @param context The velocity context for this request. */ public void doDelete(RunData rundata, Context context) throws Exception { Group group = null; try { // // get the group object from the selected group entry in the browser // group = JetspeedSecurity.getGroup( rundata.getParameters().getString( SecurityConstants.PARAM_ENTITY_ID) ); // // remove the group // JetspeedSecurity.removeGroup(group); // // success -- bring user back to group browser // DynamicURI duri = new DynamicURI (rundata); duri.addPathInfo(JetspeedResources.PATH_PANEL_KEY, SecurityConstants.PANEID_GROUP_BROWSER); rundata.getResponse().sendRedirect(duri.toString()); } catch (Exception e) { // log the error msg Log.error(e); // // error on delete - display error message // DynamicURI duri = new DynamicURI (rundata); duri.addPathInfo(JetspeedResources.PATH_PANEL_KEY, SecurityConstants.PANEID_GROUP_UPDATE); duri.addPathInfo(SecurityConstants.PARAM_MSGID, SecurityConstants.MID_DELETE_FAILED); if (group != null) duri.addPathInfo(SecurityConstants.PARAM_ENTITY_ID, group.getName()); duri.addQueryData(SecurityConstants.PARAM_MODE, SecurityConstants.PARAM_MODE_DELETE); rundata.getResponse().sendRedirect(duri.toString()); // save values that user just entered so they don't have to re-enter if (group != null) rundata.getUser().setTemp(TEMP_GROUP, group); } } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]