diff options
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.java | 60 |
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); } |