summaryrefslogtreecommitdiffstats
path: root/base/common/src/com/netscape/cms/servlet/admin/UserMembershipService.java
diff options
context:
space:
mode:
Diffstat (limited to 'base/common/src/com/netscape/cms/servlet/admin/UserMembershipService.java')
-rw-r--r--base/common/src/com/netscape/cms/servlet/admin/UserMembershipService.java60
1 files changed, 52 insertions, 8 deletions
diff --git a/base/common/src/com/netscape/cms/servlet/admin/UserMembershipService.java b/base/common/src/com/netscape/cms/servlet/admin/UserMembershipService.java
index 995551905..29688e469 100644
--- a/base/common/src/com/netscape/cms/servlet/admin/UserMembershipService.java
+++ b/base/common/src/com/netscape/cms/servlet/admin/UserMembershipService.java
@@ -18,20 +18,25 @@
package com.netscape.cms.servlet.admin;
+import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URLEncoder;
import java.util.Enumeration;
import java.util.Map;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
import org.jboss.resteasy.plugins.providers.atom.Link;
import com.netscape.certsrv.apps.CMS;
import com.netscape.certsrv.base.BadRequestException;
+import com.netscape.certsrv.base.EBaseException;
import com.netscape.certsrv.base.PKIException;
import com.netscape.certsrv.base.UserNotFoundException;
import com.netscape.certsrv.common.OpDef;
import com.netscape.certsrv.common.ScopeDef;
-import com.netscape.certsrv.group.GroupResource;
+import com.netscape.certsrv.group.GroupMemberData;
import com.netscape.certsrv.logging.IAuditor;
import com.netscape.certsrv.logging.ILogger;
import com.netscape.certsrv.user.UserMembershipCollection;
@@ -51,14 +56,18 @@ public class UserMembershipService extends PKIService implements UserMembershipR
public IUGSubsystem userGroupManager = (IUGSubsystem) CMS.getSubsystem(CMS.SUBSYSTEM_UG);
- public UserMembershipData createUserMembershipData(IGroup group) throws Exception {
+ public UserMembershipData createUserMembershipData(String userID, String groupID) throws UnsupportedEncodingException {
UserMembershipData userMembershipData = new UserMembershipData();
+ userMembershipData.setUserID(userID);
+ userMembershipData.setGroupID(groupID);
- userMembershipData.setID(group.getName());
+ URI uri = uriInfo.getBaseUriBuilder().path(UserMembershipResource.class)
+ .path("{groupID}")
+ .build(
+ URLEncoder.encode(userID, "UTF-8"),
+ URLEncoder.encode(groupID, "UTF-8"));
- String userID = URLEncoder.encode(group.getName(), "UTF-8");
- URI uri = uriInfo.getBaseUriBuilder().path(GroupResource.class).path("{groupID}").build(userID);
userMembershipData.setLink(new Link("self", uri));
return userMembershipData;
@@ -79,8 +88,7 @@ public class UserMembershipService extends PKIService implements UserMembershipR
if (user == null) {
log(ILogger.LL_FAILURE, CMS.getLogMessage("USRGRP_SRVLT_USER_NOT_EXIST"));
-
- throw new UserNotFoundException(userID, getUserMessage("CMS_USRGRP_SRVLT_USER_NOT_EXIST"));
+ throw new UserNotFoundException(userID);
}
UserMembershipCollection response = new UserMembershipCollection();
@@ -95,7 +103,7 @@ public class UserMembershipService extends PKIService implements UserMembershipR
// return entries up to the page size
for ( ; i<start+size && groups.hasMoreElements(); i++) {
IGroup group = groups.nextElement();
- response.addMembership(createUserMembershipData(group));
+ response.addMembership(createUserMembershipData(userID, group.getName()));
}
// count the total entries
@@ -122,6 +130,42 @@ public class UserMembershipService extends PKIService implements UserMembershipR
}
}
+ @Override
+ public Response addUserMembership(String userID, String groupID) {
+ try {
+ GroupMemberData groupMemberData = new GroupMemberData();
+ groupMemberData.setGroupID(groupID);
+ groupMemberData.setUserID(userID);
+
+ GroupProcessor processor = new GroupProcessor(getLocale());
+ processor.setUriInfo(uriInfo);
+ processor.addGroupMember(groupID, groupMemberData);
+
+ UserMembershipData userMembershipData = createUserMembershipData(userID, groupID);
+
+ return Response
+ .created(userMembershipData.getLink().getHref())
+ .entity(userMembershipData)
+ .type(MediaType.APPLICATION_XML)
+ .build();
+
+ } catch (EBaseException | UnsupportedEncodingException e) {
+ throw new PKIException(e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void removeUserMembership(String userID, String groupID) {
+ try {
+ GroupProcessor processor = new GroupProcessor(getLocale());
+ processor.setUriInfo(uriInfo);
+ processor.removeGroupMember(groupID, userID);
+
+ } catch (EBaseException e) {
+ throw new PKIException(e.getMessage(), e);
+ }
+ }
+
public void log(int level, String message) {
log(ILogger.S_USRGRP, level, message);
}