001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.geronimo.console.securitymanager;
019
020 import java.io.IOException;
021 import java.util.Hashtable;
022
023 import javax.portlet.ActionRequest;
024 import javax.portlet.ActionResponse;
025 import javax.portlet.PortletConfig;
026 import javax.portlet.PortletContext;
027 import javax.portlet.PortletException;
028 import javax.portlet.RenderRequest;
029 import javax.portlet.RenderResponse;
030 import javax.portlet.WindowState;
031
032 import org.apache.geronimo.console.util.SERealmGroupHelper;
033 import org.apache.geronimo.console.util.SERealmUserHelper;
034
035 public class SEGroupsPortlet extends AbstractSecurityManagerPortlet {
036
037 protected void doView(RenderRequest renderRequest,
038 RenderResponse renderResponse) throws PortletException, IOException {
039 if (WindowState.MINIMIZED.equals(renderRequest.getWindowState())) {
040 return;
041 }
042
043 String errorMessage = renderRequest.getParameter("errorMessage");
044
045 if (errorMessage != null) {
046 renderRequest.setAttribute("errorMessage", errorMessage);
047 errorView.include(renderRequest, renderResponse);
048 } else {
049 String currAction = renderRequest.getParameter("currAction");
050 String message = renderRequest.getParameter("message");
051 renderRequest.setAttribute("message", message);
052
053 try {
054 if ("new".equals(currAction)) {
055 renderRequest.setAttribute("users", SERealmUserHelper
056 .getUsers());
057 addMaximizedView.include(renderRequest, renderResponse);
058 } else if ("edit".equals(currAction)) {
059 String group = renderRequest.getParameter("group");
060 renderRequest.setAttribute("group", group);
061 renderRequest.setAttribute("users", SERealmUserHelper
062 .getUsers());
063 addMaximizedView.include(renderRequest, renderResponse);
064 } else {
065 String[] groups = SERealmGroupHelper.getGroups();
066 Hashtable groupsInfo = new Hashtable();
067 for (int i = 0; i < groups.length; i++) {
068 String currentGroup = groups[i];
069 groupsInfo.put(currentGroup, SERealmGroupHelper
070 .getUsers(currentGroup));
071 }
072 renderRequest.setAttribute("groupsInfo", groupsInfo);
073
074 if (WindowState.NORMAL.equals(renderRequest
075 .getWindowState())) {
076 normalView.include(renderRequest, renderResponse);
077 } else {
078 maximizedView.include(renderRequest, renderResponse);
079 }
080 }
081 } catch (Exception e) {
082 errorMessage = e.getMessage();
083 renderRequest.setAttribute("errorMessage", errorMessage);
084 errorView.include(renderRequest, renderResponse);
085 }
086 }
087 }
088
089 public void init(PortletConfig portletConfig) throws PortletException {
090 super.init(portletConfig);
091 PortletContext pc = portletConfig.getPortletContext();
092 normalView = pc
093 .getRequestDispatcher("/WEB-INF/view/securityrealmmanager/se/groups/normal.jsp");
094 addNormalView = pc
095 .getRequestDispatcher("/WEB-INF/view/securityrealmmanager/se/groups/addnormal.jsp");
096 maximizedView = pc
097 .getRequestDispatcher("/WEB-INF/view/securityrealmmanager/se/groups/maximized.jsp");
098 addMaximizedView = pc
099 .getRequestDispatcher("/WEB-INF/view/securityrealmmanager/se/groups/addmaximized.jsp");
100 helpView = pc
101 .getRequestDispatcher("/WEB-INF/view/securityrealmmanager/se/groups/help.jsp");
102 errorView = pc
103 .getRequestDispatcher("/WEB-INF/view/securityrealmmanager/se/groups/error.jsp");
104 }
105
106 public void processAction(ActionRequest actionRequest,
107 ActionResponse actionResponse) throws PortletException, IOException {
108 String action = actionRequest.getParameter("action").trim();
109 String cancel = actionRequest.getParameter("cancel");
110 String currAction = "";
111 if (cancel != null) {
112 action = "";
113 }
114 String group = actionRequest.getParameter("group");
115 String[] users = actionRequest.getParameterValues("users");
116
117 try {
118 if ("delete".equals(action)) {
119 SERealmGroupHelper.deleteGroup(group);
120 } else if ("update".equals(action)) {
121 SERealmGroupHelper.updateGroup(group, users);
122 } else if ("add".equals(action)) {
123 try {
124 SERealmGroupHelper.addGroup(group, users);
125 } catch (Exception e) {
126 actionResponse.setRenderParameter("message",
127 "ERROR: Error in SEGroupsPortlet while adding group "+group+". Cause:"+e.getMessage());
128 }
129 } else if ("new".equals(action)) {
130 currAction = "new";
131 } else if ("edit".equals(action)) {
132 currAction = "edit";
133 }
134 actionResponse.setRenderParameter("currAction", currAction);
135 if (group != null) {
136 actionResponse.setRenderParameter("group", group);
137 }
138 } catch (Exception e) {
139 actionResponse.setRenderParameter("message",
140 "Error encountered in SEGroupsPortlet. Cause: "
141 + e.getMessage());
142 }
143 }
144 }