svnno****@sourc*****
svnno****@sourc*****
2007年 4月 9日 (月) 07:08:54 JST
Revision: 26 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=pal&view=rev&rev=26 Author: shinsuke Date: 2007-04-09 07:08:54 +0900 (Mon, 09 Apr 2007) Log Message: ----------- added user group admin page. Modified Paths: -------------- pal-admin/trunk/src/main/java/jp/sf/pal/admin/logic/SecurityProviderLogic.java pal-admin/trunk/src/main/java/jp/sf/pal/admin/service/UserManagementService.java pal-admin/trunk/src/main/java/jp/sf/pal/admin/web/user/UserEditPage.java pal-admin/trunk/src/main/resources/appMessages.properties pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/user/label.properties pal-admin/trunk/src/main/webapp/view/user/userEdit.html Added Paths: ----------- pal-admin/trunk/src/main/java/jp/sf/pal/admin/web/user/UserGroupEditPage.java pal-admin/trunk/src/main/webapp/view/user/userGroupEdit.html -------------- next part -------------- Modified: pal-admin/trunk/src/main/java/jp/sf/pal/admin/logic/SecurityProviderLogic.java =================================================================== --- pal-admin/trunk/src/main/java/jp/sf/pal/admin/logic/SecurityProviderLogic.java 2007-04-08 21:47:31 UTC (rev 25) +++ pal-admin/trunk/src/main/java/jp/sf/pal/admin/logic/SecurityProviderLogic.java 2007-04-08 22:08:54 UTC (rev 26) @@ -3,7 +3,6 @@ import java.security.Principal; import java.util.ArrayList; import java.util.Calendar; -import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -561,6 +560,63 @@ } } + public void addUserToGroup(User user, Group group) throws PALAdminException + { + try + { + if (getGroupManager().groupExists(group.getName())) + { + getGroupManager().addUserToGroup(user.getName(), + group.getName()); + } + else + { + throw new PALAdminException("The group does not exist. group=" + + group); + } + } + catch (SecurityException e) + { + logger.error("Could not add the group to the user. user=" + user + + ", group=" + group, e); + throw new PALAdminException( + "Could not add the group to the user. user=" + user + + ", group=" + group, e); + } + } + + public void removeGroupFromUser(User user, Group group) + throws PALAdminException + { + try + { + if (getGroupManager().groupExists(group.getName())) + { + getGroupManager().removeUserFromGroup(user.getName(), + group.getName()); + } + else + { + throw new PALAdminException("The group does not exist. group=" + + group); + } + } + catch (SecurityException e) + { + logger.error("Could not remove the group from the user. user=" + + user + ", group=" + group, e); + throw new PALAdminException( + "Could not remove the group from the user. user=" + user + + ", group=" + group, e); + } + + } + + public boolean exists(Group group) + { + return getGroupManager().groupExists(group.getName()); + } + // // Role // @@ -746,6 +802,51 @@ } } + public List<String> getGroupNames() + { + //Debug + if (PALAdminConstants.DEBUG) + { + List<String> list = new ArrayList<String>(); + list.add("GROUP"); + return list; + } + + List<String> groupList = new ArrayList<String>(); + List<Principal> principals = getGroupSecurityHandler() + .getGroupPrincipals(""); + + for (Iterator<Principal> ite = principals.iterator(); ite.hasNext();) + { + groupList.add(ite.next().getName()); + } + + return groupList; + + } + + public List<String> getGroupNamesForUsername(String username) + { + //Debug + if (PALAdminConstants.DEBUG) + { + List<String> list = new ArrayList<String>(); + list.add("GROUP"); + return list; + } + + List<String> groupList = new ArrayList<String>(); + Set<Principal> principals = getSecurityProvider() + .getSecurityMappingHandler().getGroupPrincipals(username); + for (Iterator<Principal> ite = principals.iterator(); ite.hasNext();) + { + groupList.add(ite.next().getName()); + } + + return groupList; + + } + // // ProfilingRule // Modified: pal-admin/trunk/src/main/java/jp/sf/pal/admin/service/UserManagementService.java =================================================================== --- pal-admin/trunk/src/main/java/jp/sf/pal/admin/service/UserManagementService.java 2007-04-08 21:47:31 UTC (rev 25) +++ pal-admin/trunk/src/main/java/jp/sf/pal/admin/service/UserManagementService.java 2007-04-08 22:08:54 UTC (rev 26) @@ -11,13 +11,18 @@ import jp.sf.pal.admin.PALAdminConstants; import jp.sf.pal.admin.PALAdminException; import jp.sf.pal.admin.dxo.UserDxo; +import jp.sf.pal.admin.entity.Group; import jp.sf.pal.admin.entity.User; import jp.sf.pal.admin.logic.SecurityProviderLogic; import jp.sf.pal.admin.pager.UserPager; +import jp.sf.pal.admin.util.PALAdminUtil; import jp.sf.pal.admin.web.user.AbstractUserPage; import jp.sf.pal.admin.web.user.UserEditPage; +import jp.sf.pal.admin.web.user.UserGroupEditPage; import jp.sf.pal.admin.web.user.UserListPage; +import org.seasar.teeda.extension.util.LabelHelper; + public class UserManagementService { private UserPager userPager; @@ -145,17 +150,8 @@ public List<Map<String, String>> getRoleNames() { - ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>(); - for (Iterator<String> ite = securityProviderLogic.getRoleNames() - .iterator(); ite.hasNext();) - { - Map<String, String> map = new HashMap<String, String>(); - String value = ite.next(); - map.put("label", value); - map.put("value", value); - list.add(map); - } - return list; + return PALAdminUtil.createItems(securityProviderLogic.getRoleNames() + .iterator()); } public List<Map<String, String>> getProfilingRuleNames() @@ -173,7 +169,7 @@ return list; } - public boolean isUserExist(String username) + public boolean isUserExists(String username) { if (username == null || username.equals("")) { @@ -187,10 +183,24 @@ return false; } - public void loadUserEditPage(UserEditPage page) + public void loadPage(UserEditPage page) { User user = getSecurityProviderLogic().getUser(page.getName()); getUserDxo().convert(user, page); + + // set pull-down + LabelHelper labelHelper = page.getLabelHelper(); + List<Map<String, String>> list = new ArrayList<Map<String, String>>(); + list.add(PALAdminUtil.createItem(labelHelper.getLabelValue("Active"), + PALAdminConstants.USER_CREDENTIAL_ACTIVE)); + list.add(PALAdminUtil.createItem(labelHelper.getLabelValue("Expired"), + PALAdminConstants.USER_CREDENTIAL_EXPIRED)); + list.add(PALAdminUtil.createItem(labelHelper.getLabelValue("Extend"), + PALAdminConstants.USER_CREDENTIAL_EXTEND)); + list.add(PALAdminUtil.createItem(labelHelper + .getLabelValue("ExtendUnlimited"), + PALAdminConstants.USER_CREDENTIAL_EXTEND_UNLIMITED)); + page.setExpiresItems(list); } public void update(UserEditPage page) throws PALAdminException @@ -199,4 +209,87 @@ getUserDxo().convert(page, entity); getSecurityProviderLogic().updateUser(entity); } + + public void loadPage(UserGroupEditPage page) + { + page.setNewGroupItems(getGroupNames()); + page.setGroupsItems(getGroupNamesForUsername(page.getName())); + System.out + .println("TEST: UserManagementService loadPage page.getGroupsItems()=" + + page.getGroupsItems()); + } + + public List<Map<String, String>> getGroupNames() + { + return PALAdminUtil.createItems(securityProviderLogic.getGroupNames() + .iterator()); + } + + public List<Map<String, String>> getGroupNamesForUsername(String username) + { + return PALAdminUtil.createItems(securityProviderLogic + .getGroupNamesForUsername(username).iterator()); + } + + public void addGroupToUser(UserGroupEditPage page) throws PALAdminException + { + User user = new User(); + user.setName(page.getName()); + Group group = new Group(); + group.setName(page.getNewGroup()); + getSecurityProviderLogic().addUserToGroup(user, group); + } + + public void removeGroupsFromUser(UserGroupEditPage page) + throws PALAdminException + { + List<String> failedGroups = new ArrayList<String>(); + User user = new User(); + user.setName(page.getName()); + String[] groupnames = page.getGroups(); + for (int i = 0; i < groupnames.length; i++) + { + Group group = new Group(); + group.setName(groupnames[i]); + try + { + getSecurityProviderLogic().removeGroupFromUser(user, group); + } + catch (PALAdminException e) + { + failedGroups.add(groupnames[i]); + } + } + if (failedGroups.size() > 0) + { + throw new PALAdminException("Could not remove groups: " + + failedGroups); + } + } + + public boolean isGroupExists(String groupname) + { + Group group = new Group(); + group.setName(groupname); + return getSecurityProviderLogic().exists(group); + } + + public boolean isGroupExistsInUser(String username, String groupname) + { + if (username == null || groupname == null) + { + return false; + } + Iterator<String> ite = getSecurityProviderLogic() + .getGroupNamesForUsername(username).iterator(); + while (ite.hasNext()) + { + if (groupname.equals(ite.next())) + { + return true; + } + } + + return false; + } } Modified: pal-admin/trunk/src/main/java/jp/sf/pal/admin/web/user/UserEditPage.java =================================================================== --- pal-admin/trunk/src/main/java/jp/sf/pal/admin/web/user/UserEditPage.java 2007-04-08 21:47:31 UTC (rev 25) +++ pal-admin/trunk/src/main/java/jp/sf/pal/admin/web/user/UserEditPage.java 2007-04-08 22:08:54 UTC (rev 26) @@ -1,21 +1,17 @@ package jp.sf.pal.admin.web.user; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import javax.faces.internal.FacesMessageUtil; -import org.seasar.framework.log.Logger; -import org.seasar.teeda.extension.annotation.validator.Required; -import org.seasar.teeda.extension.util.LabelHelper; - -import jp.sf.pal.admin.PALAdminConstants; import jp.sf.pal.admin.PALAdminException; import jp.sf.pal.admin.service.UserManagementService; import jp.sf.pal.admin.web.AbstractCrudPage; +import org.seasar.framework.log.Logger; +import org.seasar.teeda.extension.annotation.validator.Required; + public class UserEditPage extends AbstractCrudPage { /** @@ -178,44 +174,18 @@ public Class prerender() { // Check name - if (!getUserManagementService().isUserExist(getName())) + if (!getUserManagementService().isUserExists(getName())) { FacesMessageUtil.addWarnMessage("could.not.find.user"); return UserListPage.class; } - // create pull-down - setExpiresItems(createExpiresItems()); - // update this page - getUserManagementService().loadUserEditPage(this); + getUserManagementService().loadPage(this); return null; } - private List<Map<String, String>> createExpiresItems() - { - LabelHelper labelHelper = getLabelHelper(); - List<Map<String, String>> list = new ArrayList<Map<String, String>>(); - list.add(createItem(labelHelper.getLabelValue("Active"), - PALAdminConstants.USER_CREDENTIAL_ACTIVE)); - list.add(createItem(labelHelper.getLabelValue("Expired"), - PALAdminConstants.USER_CREDENTIAL_EXPIRED)); - list.add(createItem(labelHelper.getLabelValue("Extend"), - PALAdminConstants.USER_CREDENTIAL_EXTEND)); - list.add(createItem(labelHelper.getLabelValue("ExtendUnlimited"), - PALAdminConstants.USER_CREDENTIAL_EXTEND_UNLIMITED)); - return list; - } - - private Map<String, String> createItem(String label, String value) - { - Map<String, String> map = new HashMap<String, String>(); - map.put("label", label); - map.put("value", value); - return map; - } - public String doUpdate() { try Added: pal-admin/trunk/src/main/java/jp/sf/pal/admin/web/user/UserGroupEditPage.java =================================================================== --- pal-admin/trunk/src/main/java/jp/sf/pal/admin/web/user/UserGroupEditPage.java 2007-04-08 21:47:31 UTC (rev 25) +++ pal-admin/trunk/src/main/java/jp/sf/pal/admin/web/user/UserGroupEditPage.java 2007-04-08 22:08:54 UTC (rev 26) @@ -0,0 +1,216 @@ +package jp.sf.pal.admin.web.user; + +import java.util.List; +import java.util.Map; + +import javax.faces.internal.FacesMessageUtil; + +import jp.sf.pal.admin.PALAdminException; +import jp.sf.pal.admin.service.UserManagementService; +import jp.sf.pal.admin.web.AbstractCrudPage; + +import org.seasar.framework.log.Logger; + +public class UserGroupEditPage extends AbstractCrudPage +{ + /** + * Logger for this class + */ + private static final Logger logger = Logger + .getLogger(UserGroupEditPage.class); + + private String name; + + private List<Map<String, String>> newGroupItems; + + private int newGroupIndex; + + private String newGroup; + + private List<Map<String, String>> groupsItems; + + private String[] groups; + + private UserManagementService userManagementService; + + /** + * @return the name + */ + public String getName() + { + return name; + } + + /** + * @param name the name to set + */ + public void setName(String name) + { + this.name = name; + } + + public List<Map<String, String>> getNewGroupItems() + { + return newGroupItems; + } + + public void setNewGroupItems(List<Map<String, String>> newGroupItems) + { + this.newGroupItems = newGroupItems; + } + + public List<Map<String, String>> getGroupsItems() + { + return groupsItems; + } + + public void setGroupsItems(List<Map<String, String>> usersGroupItems) + { + this.groupsItems = usersGroupItems; + } + + /** + * @return the newGroup + */ + public String getNewGroup() + { + return newGroup; + } + + /** + * @param newGroup the newGroup to set + */ + public void setNewGroup(String newGroup) + { + this.newGroup = newGroup; + } + + /** + * @return the newGroupIndex + */ + public int getNewGroupIndex() + { + return newGroupIndex; + } + + /** + * @param newGroupIndex the newGroupIndex to set + */ + public void setNewGroupIndex(int newGroupIndex) + { + this.newGroupIndex = newGroupIndex; + } + + /** + * @return the usersGroup + */ + public String[] getGroups() + { + if (groups == null) + { + groups = new String[0]; + } + return groups; + } + + /** + * @param usersGroup the usersGroup to set + */ + public void setGroups(String[] groups) + { + this.groups = groups; + } + + /** + * @return the userManagementService + */ + public UserManagementService getUserManagementService() + { + return userManagementService; + } + + /** + * @param userManagementService the userManagementService to set + */ + public void setUserManagementService( + UserManagementService userManagementService) + { + this.userManagementService = userManagementService; + } + + public String initialize() + { + return null; + } + + public String prerender() + { + // load page + getUserManagementService().loadPage(this); + + return null; + } + + public String doAddGroup() + { + if (getName() == null || getNewGroup() == null) + { + FacesMessageUtil.addWarnMessage("invalid.group.or.user.name"); + return null; + } + + // check if group exists + if (getUserManagementService().isGroupExistsInUser(getName(), + getNewGroup())) + { + FacesMessageUtil.addWarnMessage("group.exists.in.user", + new Object[] { getName(), getNewGroup() }); + return null; + } + + try + { + getUserManagementService().addGroupToUser(this); + FacesMessageUtil.addInfoMessage("added.group.to.user", + new Object[] { getName(), getNewGroup() }); + + // clear + setNewGroup(null); + } + catch (PALAdminException e) + { + FacesMessageUtil.addErrorMessage("failed.to.add.group.to.user", + new Object[] { getName(), getNewGroup() }); + logger.error("Failed to add group to user. user=" + getName() + + ", group=" + getNewGroup(), e); + } + return null; + } + + public String doRemoveGroup() + { + try + { + getUserManagementService().removeGroupsFromUser(this); + FacesMessageUtil.addInfoMessage("removed.groups.from.user", + new Object[] { getName(), getGroups().toString() }); + + // clear + setGroups(null); + } + catch (PALAdminException e) + { + FacesMessageUtil.addErrorMessage( + "failed.to.remove.groups.from.user", new Object[] { + getName(), getGroups() }); + logger.error("Failed to remove groups from user. user=" + getName() + + ", groups=" + getGroups(), e); + } + return null; + } + + public boolean isGroupsForUser() + { + return getGroupsItems().size() > 0; + } +} Property changes on: pal-admin/trunk/src/main/java/jp/sf/pal/admin/web/user/UserGroupEditPage.java ___________________________________________________________________ Name: svn:eol-style + native Modified: pal-admin/trunk/src/main/resources/appMessages.properties =================================================================== --- pal-admin/trunk/src/main/resources/appMessages.properties 2007-04-08 21:47:31 UTC (rev 25) +++ pal-admin/trunk/src/main/resources/appMessages.properties 2007-04-08 22:08:54 UTC (rev 26) @@ -15,4 +15,12 @@ could.not.find.user=Could not find the target user. updated.user.information= Updated the target user information({0}). -failed.to.update.user.information=Failed to updated the user information({0}). \ No newline at end of file +failed.to.update.user.information=Failed to updated the user information({0}). + +added.group.to.user= Added the group({1}) to the user({0}). +failed.to.add.group.to.user=Failed to add the group({1}) to the user({0}). +removed.groups.from.user=Removed groups({1}) from the user({0}). +failed.to.remove.groups.from.user=Failed to remove groups({1}) from the user({0}). +invalid.group.or.user.name=Invalid group or user name. +group.exists.in.user=The group({1}) exists in the user({0}). + Modified: pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/user/label.properties =================================================================== --- pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/user/label.properties 2007-04-08 21:47:31 UTC (rev 25) +++ pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/user/label.properties 2007-04-08 22:08:54 UTC (rev 26) @@ -25,4 +25,9 @@ userEdit.Extend=Extend userEdit.ExtendUnlimited=Extend Unlimited - \ No newline at end of file +# userGroupEdit +userGroupEdit.newGroup=New Group +userGroupEdit.group=Group +userGroupEdit.notFound=Not found. + + Modified: pal-admin/trunk/src/main/webapp/view/user/userEdit.html =================================================================== --- pal-admin/trunk/src/main/webapp/view/user/userEdit.html 2007-04-08 21:47:31 UTC (rev 25) +++ pal-admin/trunk/src/main/webapp/view/user/userEdit.html 2007-04-08 22:08:54 UTC (rev 26) @@ -31,6 +31,14 @@ <div> <span id="basicTabLabel">Basic</span> + | + <a id="jumpUserRoleEdit" href="userRoleEdit.html?fixed_crudType=3&name=name" style="text-decoration: none;"> + <span id="roleTabLabel">Role</span> + </a> + | + <a id="jumpUserGroupEdit" href="userGroupEdit.html?fixed_crudType=3&name=name" style="text-decoration: none;"> + <span id="groupTabLabel">Group</span> + </a> </div> <table class="tablebg"> @@ -80,7 +88,7 @@ onclick="location.href='userList.html'" class="portlet-form-button"/> <div id="isNotRead" style="display:inline;"> <input type="button" id="doUpdate" value="Update" - onclick="location.href='userConfirm.html'" class="portlet-form-button"/> + onclick="location.href='userEdit.html'" class="portlet-form-button"/> </div> </div> </div> Added: pal-admin/trunk/src/main/webapp/view/user/userGroupEdit.html =================================================================== --- pal-admin/trunk/src/main/webapp/view/user/userGroupEdit.html 2007-04-08 21:47:31 UTC (rev 25) +++ pal-admin/trunk/src/main/webapp/view/user/userGroupEdit.html 2007-04-08 22:08:54 UTC (rev 26) @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="stylesheet" type="text/css" href="../../css/global.css"/> +</head> +<body> +<form id="UserGroupEditForm"><input type="hidden" id="crudType" /> +<!-- tab: BEGIN --> +<div style="padding: 0px 0px 3px 10px; margin:5px 0px;border-bottom:1px solid #000000;"> + <span id="userTabLabel" style="border-top:1px solid #000000;border-right:1px solid #000000;border-bottom:1px solid #ffffff;border-left:1px solid #000000;padding: 3px 5px 3px 5px; margin: 0px 0px;">User</span> + <a id="jumpRoleList" href="../role/roleList.html" style="text-decoration: none;"> + <span id="roleTabLabel" style="font-weight: bold;color:#ffffff;background-color:#999999;border:1px solid #000000; padding: 3px 5px 3px 5px; margin: 0px 0px;">Role</span> + </a> + <a id="jumpGroupList" href="../group/groupList.html" style="text-decoration: none;"> + <span id="groupTabLabel" style="font-weight: bold;color:#ffffff;background-color:#999999;border:1px solid #000000; padding: 3px 5px 3px 5px; margin: 0px 0px;">Group</span> + </a> +</div> +<!-- tab: END --> + +<div> + <span id="allMessages" fatalClass="portlet-msg-error" errorClass="portlet-msg-error" warnClass="portlet-msg-alert" infoClass="portlet-msg-info"></span> +</div> + +<!-- content: BEGIN --> +<div style="padding:5px 0px;"> + <div class="portlet-section-header"> + <label id="userInformationLabel">User Information</label> + </div> + + <div> + <a id="jumpUserEdit" href="userEdit.html?fixed_crudType=3&name=name" style="text-decoration: none;"> + <span id="basicTabLabel">Basic</span> + </a> + | + <a id="jumpUserRoleEdit" href="userRoleEdit.html?fixed_crudType=3&name=name" style="text-decoration: none;"> + <span id="roleTabLabel">Role</span> + </a> + | + <span id="groupTabLabel">Group</span> + </div> + + <table class="tablebg"> + <tr> + <td class="portlet-section-subheader"><label id="newGroupLabel">New Group</label></td> + <td class="portlet-section-body"> + <select id="newGroupItems" style="width:150px;"> + <option>NEW GROUP</option> + </select> + <input type="button" id="doAddGroup" value="Add" class="portlet-form-button" onclick="location.href='userGroupEdit.html'"/> + </td> + <td><span id="newGroupMessage"></span></td> + </tr> + <tr> + <td class="portlet-section-subheader"><label id="groupLabel">Group</label></td> + <td class="portlet-section-body"> + <div id="isGroupsForUser"> + <select id="groupsItems" multiple="multiple" size="10" style="width:150px;"> + <option>GROUP</option> + </select> + <input type="button" id="doRemoveGroup" value="Remove" + onclick="location.href='userGroupEdit.html'" class="portlet-form-button"/> + </div> + <div id="isNotGroupsForUser"> + <label id="notFoundLabel">Not found.</label> + </div> + </td> + <td><span id="groupsMessage"></span></td> + </tr> + </table> + + <div> + <input type="button" id="jumpUserList" value="Back" + onclick="location.href='userList.html'" class="portlet-form-button"/> + <div id="isNotRead" style="display:inline;"> + <input type="hidden" id="name-hidden"/> + </div> + </div> +</div> +<!-- content: BEGIN --> +</form> +</body></html> Property changes on: pal-admin/trunk/src/main/webapp/view/user/userGroupEdit.html ___________________________________________________________________ Name: svn:eol-style + native