diff options
author | Endi S. Dewata <edewata@redhat.com> | 2014-08-26 18:49:56 -0400 |
---|---|---|
committer | Endi S. Dewata <edewata@redhat.com> | 2014-08-27 13:05:49 -0400 |
commit | 579ca2f8c894087c839e60b7c5775b5e7483362a (patch) | |
tree | b301399cbd6faf28024fa6456ce8060f381e62ce /base/server/cms/src/com/netscape/cms | |
parent | 6444287caa2ad171086d0ce9d93761a897247e06 (diff) | |
download | pki-579ca2f8c894087c839e60b7c5775b5e7483362a.tar.gz pki-579ca2f8c894087c839e60b7c5775b5e7483362a.tar.xz pki-579ca2f8c894087c839e60b7c5775b5e7483362a.zip |
Fixed problems in group operations.
Previously modifying the description of an empty group failed
because the server tried to delete a uniqueMember attribute that
did not exist because the group was already empty. The servlets and
group subsystem has been fixed to retrieve the existing group data
first, perform the changes on it, then save it back to the database.
Also adding a new group will no longer require a description because
it's not required by the LDAP object class.
Ticket #818
Diffstat (limited to 'base/server/cms/src/com/netscape/cms')
-rw-r--r-- | base/server/cms/src/com/netscape/cms/servlet/admin/UsrGrpAdminServlet.java | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/base/server/cms/src/com/netscape/cms/servlet/admin/UsrGrpAdminServlet.java b/base/server/cms/src/com/netscape/cms/servlet/admin/UsrGrpAdminServlet.java index 836369bc4..cce1ce3f4 100644 --- a/base/server/cms/src/com/netscape/cms/servlet/admin/UsrGrpAdminServlet.java +++ b/base/server/cms/src/com/netscape/cms/servlet/admin/UsrGrpAdminServlet.java @@ -53,6 +53,7 @@ import com.netscape.certsrv.logging.ILogger; import com.netscape.certsrv.password.IPasswordCheck; import com.netscape.certsrv.usrgrp.EUsrGrpException; import com.netscape.certsrv.usrgrp.IGroup; +import com.netscape.certsrv.usrgrp.IGroupConstants; import com.netscape.certsrv.usrgrp.IUGSubsystem; import com.netscape.certsrv.usrgrp.IUser; import com.netscape.cmsutil.util.Cert; @@ -1673,17 +1674,15 @@ public class UsrGrpAdminServlet extends AdminServlet { } IGroup group = mMgr.createGroup(id); - String members = super.getParameter(req, - Constants.PR_GROUP_USER); - String desc = super.getParameter(req, - Constants.PR_GROUP_DESC); - if (desc != null) { - group.set("description", desc); - } else { - group.set("description", ""); + // add description if specified + String description = super.getParameter(req, Constants.PR_GROUP_DESC); + if (description != null && !description.equals("")) { + group.set(IGroupConstants.ATTR_DESCRIPTION, description); } + // add members if specified + String members = super.getParameter(req, Constants.PR_GROUP_USER); if (members != null) { StringTokenizer st = new StringTokenizer(members, ","); @@ -1917,18 +1916,25 @@ public class UsrGrpAdminServlet extends AdminServlet { return; } - IGroup group = mMgr.createGroup(id); - - String desc = super.getParameter(req, - Constants.PR_GROUP_DESC); + IGroup group = mMgr.getGroupFromName(id); - if (desc != null) { - group.set("description", desc); + // update description if specified + String description = super.getParameter(req, Constants.PR_GROUP_DESC); + if (description != null) { + if (description.equals("")) { + group.delete(IGroupConstants.ATTR_DESCRIPTION); + } else { + group.set(IGroupConstants.ATTR_DESCRIPTION, description); + } } + // update members if specified String members = super.getParameter(req, Constants.PR_GROUP_USER); - if (members != null) { + // empty old member list + group.delete(IGroupConstants.ATTR_MEMBERS); + + // read new member list StringTokenizer st = new StringTokenizer(members, ","); String groupName = group.getName(); @@ -1938,6 +1944,7 @@ public class UsrGrpAdminServlet extends AdminServlet { multiRole = mConfig.getBoolean(MULTI_ROLE_ENABLE); } catch (Exception eee) { } + while (st.hasMoreTokens()) { String memberName = st.nextToken(); if (multiRole) { |