You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by ta...@apache.org on 2005/04/25 09:29:07 UTC
cvs commit: jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/roles RoleDetails.java RoleBrowser.java
taylor 2005/04/25 00:29:07
Modified: applications/security/src/java/org/apache/jetspeed/portlets/security/roles
RoleBrowser.java
Added: applications/security/src/java/org/apache/jetspeed/portlets/security/roles
RoleDetails.java
Log:
http://issues.apache.org/jira/browse/JS2-237
- roles maintainance, add users to roles
Revision Changes Path
1.5 +15 -88 jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/roles/RoleBrowser.java
Index: RoleBrowser.java
===================================================================
RCS file: /home/cvs/jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/roles/RoleBrowser.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- RoleBrowser.java 23 Apr 2005 20:33:36 -0000 1.4
+++ RoleBrowser.java 25 Apr 2005 07:29:07 -0000 1.5
@@ -107,13 +107,13 @@
public void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException
{
- String selected = (String)PortletMessaging.receive(request, "role", "selected");
+ String selected = (String)PortletMessaging.receive(request, SecurityResources.TOPIC_ROLES, SecurityResources.MESSAGE_SELECTED);
if (selected != null)
{
Context context = this.getContext(request);
context.put("selected", selected);
}
- StatusMessage msg = (StatusMessage)PortletMessaging.consume(request, "RoleBrowser", "status");
+ StatusMessage msg = (StatusMessage)PortletMessaging.consume(request, SecurityResources.TOPIC_ROLES, SecurityResources.MESSAGE_STATUS);
if (msg != null)
{
this.getContext(request).put("statusMsg", msg);
@@ -124,7 +124,13 @@
{
this.getContext(request).put(FILTERED, "on");
}
-
+
+ String refresh = (String)PortletMessaging.consume(request, SecurityResources.TOPIC_ROLES, SecurityResources.MESSAGE_REFRESH);
+ if (refresh != null)
+ {
+ this.clearBrowserIterator(request);
+ }
+
super.doView(request, response);
}
@@ -139,84 +145,12 @@
Role role = lookupRole(selected);
if (role != null)
{
- PortletMessaging.publish(request, "role", "selected", selected);
- PortletMessaging.publish(request, "role", "change", selected);
- }
- }
- String refresh = request.getParameter("role.refresh");
- String save = request.getParameter("role.save");
- String neue = request.getParameter("role.new");
- String delete = request.getParameter("roleDelete");
-
- if (refresh != null)
- {
- this.clearBrowserIterator(request);
- }
- else if (neue != null)
- {
- PortletMessaging.cancel(request, "role", "selected");
- }
- else if (delete != null && (!(isEmpty(delete))))
- {
- try
- {
- Role role = lookupRole(delete);
- if (role != null)
- {
- roleManager.removeRole(delete);
- this.clearBrowserIterator(request);
- PortletMessaging.cancel(request, "role", "selected");
- PortletMessaging.publish(request, SecurityResources.TOPIC_ROLES, "roles", "refresh");
- }
- }
- catch (Exception e)
- {
- publishStatusMessage(request, "RoleBrowser", "status", e, "Could not remove role");
+ PortletMessaging.publish(request, SecurityResources.TOPIC_ROLES, SecurityResources.MESSAGE_SELECTED, selected);
+ PortletMessaging.publish(request, SecurityResources.TOPIC_ROLES, SecurityResources.MESSAGE_CHANGED, selected);
}
}
- else if (save != null)
- {
- String roleName = request.getParameter("role.name");
- if (!(isEmpty(roleName)))
- {
- try
- {
- Role role = null;
- String old = (String)PortletMessaging.receive(request, "role", "selected");
- if (old != null)
- {
- role = lookupRole(old);
- }
- else
- {
- role = lookupRole(roleName);
- }
- if (role != null)
- {
- if (old != null && !old.equals(roleName))
- {
- roleManager.removeRole(old);
- roleManager.addRole(roleName);
- this.clearBrowserIterator(request);
- PortletMessaging.publish(request, "role", "selected", roleName);
- }
- }
- else
- {
- roleManager.addRole(roleName);
- this.clearBrowserIterator(request);
- }
- PortletMessaging.publish(request, SecurityResources.TOPIC_ROLES, "roles", "refresh");
- }
- catch (Exception e)
- {
- publishStatusMessage(request, "RoleBrowser", "status", e, "Could not store role");
- }
- }
- }
}
-
- // TODO: if request parameters were working correctly we could replace this with render parameters
+
String filtered = (String)request.getParameter(FILTERED);
if (filtered != null)
{
@@ -227,7 +161,8 @@
PortletMessaging.cancel(request, SecurityResources.TOPIC_ROLES, SecurityResources.MESSAGE_FILTERED);
}
- super.processAction(request, response);
+ super.processAction(request, response);
+
}
private Role lookupRole(String roleName)
@@ -242,13 +177,5 @@
}
}
- private boolean isEmpty(String s)
- {
- if (s == null) return true;
-
- if (s.trim().equals("")) return true;
-
- return false;
- }
}
1.1 jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/roles/RoleDetails.java
Index: RoleDetails.java
===================================================================
/* Copyright 2004 Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jetspeed.portlets.security.roles;
import java.io.IOException;
import java.security.Principal;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.ResourceBundle;
import java.util.StringTokenizer;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletConfig;
import javax.portlet.PortletException;
import javax.portlet.PortletMode;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import org.apache.jetspeed.portlets.security.SecurityResources;
import org.apache.jetspeed.portlets.security.SecurityUtil;
import org.apache.jetspeed.security.RoleManager;
import org.apache.jetspeed.security.User;
import org.apache.jetspeed.security.UserManager;
import org.apache.jetspeed.security.UserPrincipal;
import org.apache.portals.gems.browser.BrowserIterator;
import org.apache.portals.gems.browser.DatabaseBrowserIterator;
import org.apache.portals.gems.browser.BrowserPortlet;
import org.apache.portals.gems.util.StatusMessage;
import org.apache.portals.messaging.PortletMessaging;
import org.apache.velocity.context.Context;
/**
* Role Details
*
* @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
* @version $Id: RoleDetails.java,v 1.1 2005/04/25 07:29:07 taylor Exp $
*/
public class RoleDetails extends BrowserPortlet
{
private UserManager userManager;
private RoleManager roleManager;
public void init(PortletConfig config)
throws PortletException
{
super.init(config);
userManager = (UserManager) getPortletContext().getAttribute(SecurityResources.CPS_USER_MANAGER_COMPONENT);
if (null == userManager)
{
throw new PortletException("Failed to find the User Manager on portlet initialization");
}
roleManager = (RoleManager) getPortletContext().getAttribute(SecurityResources.CPS_ROLE_MANAGER_COMPONENT);
if (null == roleManager)
{
throw new PortletException("Failed to find the Role Manager on portlet initialization");
}
}
public void getRows(RenderRequest request, String sql, int windowSize)
throws Exception
{
List resultSetTitleList = new ArrayList();
List resultSetTypeList = new ArrayList();
try
{
List list = new ArrayList();
resultSetTypeList.add(String.valueOf(Types.VARCHAR));
resultSetTitleList.add("Users in Role");
String selectedRole = (String)PortletMessaging.receive(request, SecurityResources.TOPIC_ROLES, SecurityResources.MESSAGE_SELECTED);
if (selectedRole != null)
{
Iterator users = userManager.getUsersInRole(selectedRole).iterator();
while (users.hasNext())
{
User user = (User)users.next();
Principal principal = SecurityUtil.getPrincipal(user.getSubject(),
UserPrincipal.class);
list.add(principal.getName());
}
}
BrowserIterator iterator = new DatabaseBrowserIterator(
list, resultSetTitleList, resultSetTypeList,
windowSize);
setBrowserIterator(request, iterator);
iterator.sort("Users in Role");
}
catch (Exception e)
{
//log.error("Exception in CMSBrowserAction.getRows: ", e);
e.printStackTrace();
throw e;
}
}
public void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException
{
String change = (String)PortletMessaging.consume(request, SecurityResources.TOPIC_ROLES, SecurityResources.MESSAGE_CHANGED);
if (change != null)
{
this.clearBrowserIterator(request);
}
Context context = this.getContext(request);
String selectedRole = (String)PortletMessaging.receive(request, SecurityResources.TOPIC_ROLES, SecurityResources.MESSAGE_SELECTED);
if (selectedRole != null)
{
context.put("role", selectedRole);
}
String userChooser = SecurityUtil.getAbsoluteUrl(request, "/Administrative/choosers/multiusers.psml");
context.put("userChooser", userChooser);
StatusMessage msg = (StatusMessage)PortletMessaging.consume(request, SecurityResources.TOPIC_ROLES_USERS, SecurityResources.MESSAGE_STATUS);
if (msg != null)
{
this.getContext(request).put("statusMsg", msg);
}
String refresh = (String)PortletMessaging.consume(request, SecurityResources.TOPIC_ROLES_USERS, SecurityResources.MESSAGE_REFRESH);
if (refresh != null)
{
this.clearBrowserIterator(request);
}
super.doView(request, response);
}
public void processAction(ActionRequest request, ActionResponse response)
throws PortletException, IOException
{
if (request.getPortletMode() == PortletMode.VIEW)
{
String roleAction = request.getParameter("role.action");
String users = request.getParameter("users");
System.out.println("role.action = " + roleAction);
System.out.println("users = " + users);
if (users != null && users.length() > 0)
{
addUsersToRole(request, users);
}
else if (roleAction != null && roleAction.equals("Add New Role"))
{
PortletMessaging.cancel(request, SecurityResources.TOPIC_ROLES, SecurityResources.MESSAGE_SELECTED);
}
else if (roleAction != null && roleAction.equals("Remove Checked Users"))
{
removeUsersFromRole(request);
}
else if (roleAction != null && roleAction.equals("Remove Role"))
{
removeRole(request);
}
else if (roleAction != null && roleAction.equals("Save"))
{
addRole(request);
}
}
super.processAction(request, response);
}
protected void addRole(ActionRequest actionRequest)
{
String role = actionRequest.getParameter("role");
if (!SecurityUtil.isEmpty(role))
{
try
{
roleManager.addRole(role);
PortletMessaging.publish(actionRequest,
SecurityResources.TOPIC_ROLES,
SecurityResources.MESSAGE_REFRESH, "true");
}
catch (Exception se)
{
ResourceBundle bundle = ResourceBundle.getBundle("org.apache.jetspeed.portlets.security.resources.UsersResources",actionRequest.getLocale());
SecurityUtil.publishErrorMessage(actionRequest, bundle.getString("user.exists"));
}
}
}
protected void removeRole(ActionRequest actionRequest)
{
String role = actionRequest.getParameter("role");
if (!SecurityUtil.isEmpty(role))
{
try
{
roleManager.removeRole(role);
PortletMessaging.publish(actionRequest,
SecurityResources.TOPIC_ROLES,
SecurityResources.MESSAGE_REFRESH, "true");
PortletMessaging.cancel(actionRequest, SecurityResources.TOPIC_ROLES, SecurityResources.MESSAGE_SELECTED);
}
catch (Exception se)
{
ResourceBundle bundle = ResourceBundle.getBundle("org.apache.jetspeed.portlets.security.resources.UsersResources",actionRequest.getLocale());
SecurityUtil.publishErrorMessage(actionRequest, bundle.getString("user.exists"));
}
}
}
protected void addUsersToRole(ActionRequest request, String users)
{
String role = request.getParameter("role");
if (role != null)
{
int count = 0;
StringTokenizer tokenizer = new StringTokenizer(users, ",");
while (tokenizer.hasMoreTokens())
{
String user = tokenizer.nextToken();
try
{
if (user.startsWith("box_"))
{
user = user.substring("box_".length());
roleManager.addRoleToUser(user, role);
count++;
}
}
catch (Exception e)
{
System.err.println("failed to add user to role: " + user);
}
}
if (count > 0)
{
try
{
PortletMessaging.publish(request,
SecurityResources.TOPIC_ROLES_USERS,
SecurityResources.MESSAGE_REFRESH, "true");
}
catch (Exception e)
{}
}
}
}
protected void removeUsersFromRole(ActionRequest request)
{
String role = request.getParameter("role");
if (role != null)
{
int count = 0;
Enumeration e = request.getParameterNames();
while (e.hasMoreElements())
{
String name = (String)e.nextElement();
if (name.startsWith("box_"))
{
String user = name.substring("box_".length());
try
{
roleManager.removeRoleFromUser(user, role);
count++;
}
catch (Exception e1)
{
System.err.println("failed to remove user from role: " + user);
}
}
}
if (count > 0)
{
try
{
PortletMessaging.publish(request,
SecurityResources.TOPIC_ROLES_USERS,
SecurityResources.MESSAGE_REFRESH, "true");
}
catch (Exception e2)
{}
}
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org