summaryrefslogtreecommitdiffstats
path: root/base/server/cms/src/com/netscape/cms/servlet/admin
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2014-08-26 18:49:56 -0400
committerEndi S. Dewata <edewata@redhat.com>2014-08-27 13:05:49 -0400
commit579ca2f8c894087c839e60b7c5775b5e7483362a (patch)
treeb301399cbd6faf28024fa6456ce8060f381e62ce /base/server/cms/src/com/netscape/cms/servlet/admin
parent6444287caa2ad171086d0ce9d93761a897247e06 (diff)
downloadpki-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/servlet/admin')
-rw-r--r--base/server/cms/src/com/netscape/cms/servlet/admin/UsrGrpAdminServlet.java37
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) {