summaryrefslogtreecommitdiffstats
path: root/base/server/cms/src/com/netscape/cms/servlet/admin
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2013-12-10 20:10:06 -0500
committerEndi S. Dewata <edewata@redhat.com>2013-12-16 19:15:43 -0500
commit017e14f93e376f7cbc20066f052a39c4552860d9 (patch)
treee7707f6cf39db3052261794b66a6934173b6104c /base/server/cms/src/com/netscape/cms/servlet/admin
parent5952a82975063c4ec27303091a44e586d1386933 (diff)
downloadpki-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.java5
-rw-r--r--base/server/cms/src/com/netscape/cms/servlet/admin/UserService.java79
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>
*