diff options
author | Endi S. Dewata <edewata@redhat.com> | 2013-12-10 20:10:06 -0500 |
---|---|---|
committer | Endi S. Dewata <edewata@redhat.com> | 2013-12-16 19:15:43 -0500 |
commit | 017e14f93e376f7cbc20066f052a39c4552860d9 (patch) | |
tree | e7707f6cf39db3052261794b66a6934173b6104c /base/server/cms/src/com/netscape/cms/servlet/admin | |
parent | 5952a82975063c4ec27303091a44e586d1386933 (diff) | |
download | pki-017e14f93e376f7cbc20066f052a39c4552860d9.tar.gz pki-017e14f93e376f7cbc20066f052a39c4552860d9.tar.xz pki-017e14f93e376f7cbc20066f052a39c4552860d9.zip |
Using PATCH method for modify operations.
Some modify operations have been modified to use HTTP PATCH method
since the request only contains changes to the resource, not the
entire resource. To replace the entire resource, separate replace
operations using HTTP PUT method will be used instead. The Backbone
library is using the same convention by default.
Ticket #654
Diffstat (limited to 'base/server/cms/src/com/netscape/cms/servlet/admin')
-rw-r--r-- | base/server/cms/src/com/netscape/cms/servlet/admin/GroupService.java | 5 | ||||
-rw-r--r-- | base/server/cms/src/com/netscape/cms/servlet/admin/UserService.java | 79 |
2 files changed, 83 insertions, 1 deletions
diff --git a/base/server/cms/src/com/netscape/cms/servlet/admin/GroupService.java b/base/server/cms/src/com/netscape/cms/servlet/admin/GroupService.java index 5f9a3b947..a20b548ad 100644 --- a/base/server/cms/src/com/netscape/cms/servlet/admin/GroupService.java +++ b/base/server/cms/src/com/netscape/cms/servlet/admin/GroupService.java @@ -267,7 +267,10 @@ public class GroupService extends PKIService implements GroupResource { throw new ResourceNotFoundException("Group " + groupID + " not found."); } - group.set("description", groupData.getDescription()); + String description = groupData.getDescription(); + if (description != null) { + group.set("description", description); + } // allow adding a group with no members, except "Certificate // Server Administrators" diff --git a/base/server/cms/src/com/netscape/cms/servlet/admin/UserService.java b/base/server/cms/src/com/netscape/cms/servlet/admin/UserService.java index c24154094..63a461355 100644 --- a/base/server/cms/src/com/netscape/cms/servlet/admin/UserService.java +++ b/base/server/cms/src/com/netscape/cms/servlet/admin/UserService.java @@ -367,6 +367,85 @@ public class UserService extends PKIService implements UserResource { } /** + * Replaces an existing user in local scope. + * <P> + * + * Request/Response Syntax: http://warp.mcom.com/server/certificate/columbo/design/ + * ui/admin-protocol-definition.html#user-admin + * <P> + * + * <ul> + * <li>signed.audit LOGGING_SIGNED_AUDIT_CONFIG_ROLE used when configuring role information (anything under + * users/groups) + * </ul> + */ + @Override + public Response replaceUser(String userID, UserData userData) { + + if (userData == null) throw new BadRequestException("User data is null."); + + // ensure that any low-level exceptions are reported + // to the signed audit log and stored as failures + IConfigStore cs = CMS.getConfigStore(); + try { + if (userID == null) { + log(ILogger.LL_FAILURE, CMS.getLogMessage("ADMIN_SRVLT_NULL_RS_ID")); + throw new BadRequestException(getUserMessage("CMS_ADMIN_SRVLT_NULL_RS_ID", headers)); + } + + IUser user = userGroupManager.createUser(userID); + + String fullName = userData.getFullName(); + user.setFullName(fullName); + + String email = userData.getEmail(); + user.setEmail(email); + + String pword = userData.getPassword(); + IPasswordCheck passwdCheck = CMS.getPasswordChecker(); + + if (!passwdCheck.isGoodPassword(pword)) { + throw new EUsrGrpException(passwdCheck.getReason(pword)); + } + + user.setPassword(pword); + + String phone = userData.getPhone(); + user.setPhone(phone); + + String state = userData.getState(); + user.setState(state); + + String csType = cs.getString("cs.type"); + if (csType.equals("TPS")) { + String tpsProfiles = userData.getAttribute(ATTR_TPS_PROFILES); + String[] profiles = tpsProfiles.split(","); + user.setTpsProfiles(Arrays.asList(profiles)); + } + + userGroupManager.modifyUser(user); + + auditModifyUser(userID, userData, ILogger.SUCCESS); + + // read the data back + userData = getUser(userID); + + return Response + .ok(userData) + .type(MediaType.APPLICATION_XML) + .build(); + + } catch (PKIException e) { + auditModifyUser(userID, userData, ILogger.FAILURE); + throw e; + + } catch (EBaseException e) { + auditModifyUser(userID, userData, ILogger.FAILURE); + throw new PKIException(e.getMessage()); + } + } + + /** * Modifies an existing user in local scope. * <P> * |