From ebe79a4db05662091bd15efc860ef6923beff2aa Mon Sep 17 00:00:00 2001 From: "Endi S. Dewata" Date: Thu, 20 Oct 2016 00:54:47 +0200 Subject: [PATCH] Updated AccountInfo. The AccountInfo has been changed to extend the ResourceMessage such that it can be used to pass the list of accessible components as an attribute. https://fedorahosted.org/pki/ticket/2523 (cherry picked from commit 6d5d15edebeb1ba113e4f3d5b2bb1ba93a92ce1d) (cherry picked from commit 388e443b99999dd2aa0832aaed0cdf43ee260b81) --- .../com/netscape/certsrv/account/AccountInfo.java | 8 ++-- .../com/netscape/certsrv/base/ResourceMessage.java | 11 +++++- .../org/dogtagpki/server/rest/AccountService.java | 46 ++++++++-------------- 3 files changed, 31 insertions(+), 34 deletions(-) diff --git a/base/common/src/com/netscape/certsrv/account/AccountInfo.java b/base/common/src/com/netscape/certsrv/account/AccountInfo.java index 7943d22..3310bf0 100644 --- a/base/common/src/com/netscape/certsrv/account/AccountInfo.java +++ b/base/common/src/com/netscape/certsrv/account/AccountInfo.java @@ -33,11 +33,13 @@ import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.adapters.XmlAdapter; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import com.netscape.certsrv.base.ResourceMessage; + /** * @author Endi S. Dewata */ @XmlRootElement(name="Account") -public class AccountInfo { +public class AccountInfo extends ResourceMessage { public static Marshaller marshaller; public static Unmarshaller unmarshaller; @@ -98,7 +100,7 @@ public class AccountInfo { @Override public int hashCode() { final int prime = 31; - int result = 1; + int result = super.hashCode(); result = prime * result + ((email == null) ? 0 : email.hashCode()); result = prime * result + ((fullName == null) ? 0 : fullName.hashCode()); result = prime * result + ((id == null) ? 0 : id.hashCode()); @@ -110,7 +112,7 @@ public class AccountInfo { public boolean equals(Object obj) { if (this == obj) return true; - if (obj == null) + if (!super.equals(obj)) return false; if (getClass() != obj.getClass()) return false; diff --git a/base/common/src/com/netscape/certsrv/base/ResourceMessage.java b/base/common/src/com/netscape/certsrv/base/ResourceMessage.java index 1214b45..85d0d07 100644 --- a/base/common/src/com/netscape/certsrv/base/ResourceMessage.java +++ b/base/common/src/com/netscape/certsrv/base/ResourceMessage.java @@ -26,6 +26,7 @@ import javax.xml.bind.annotation.XmlValue; import javax.xml.bind.annotation.adapters.XmlAdapter; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import com.netscape.certsrv.account.AccountInfo; import com.netscape.certsrv.key.AsymKeyGenerationRequest; import com.netscape.certsrv.key.KeyArchivalRequest; import com.netscape.certsrv.key.KeyRecoveryRequest; @@ -35,8 +36,14 @@ import com.netscape.certsrv.key.SymKeyGenerationRequest; * @author Ade Lee */ @XmlRootElement(name = "ResourceMessage") -@XmlSeeAlso({ KeyArchivalRequest.class, KeyRecoveryRequest.class, SymKeyGenerationRequest.class, - PKIException.Data.class, AsymKeyGenerationRequest.class }) +@XmlSeeAlso({ + AccountInfo.class, + KeyArchivalRequest.class, + KeyRecoveryRequest.class, + SymKeyGenerationRequest.class, + PKIException.Data.class, + AsymKeyGenerationRequest.class +}) @XmlAccessorType(XmlAccessType.NONE) public class ResourceMessage { diff --git a/base/server/cms/src/org/dogtagpki/server/rest/AccountService.java b/base/server/cms/src/org/dogtagpki/server/rest/AccountService.java index 827e99e..673db45 100644 --- a/base/server/cms/src/org/dogtagpki/server/rest/AccountService.java +++ b/base/server/cms/src/org/dogtagpki/server/rest/AccountService.java @@ -21,13 +21,8 @@ package org.dogtagpki.server.rest; import java.security.Principal; import java.util.Arrays; -import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.Request; import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; import org.apache.catalina.realm.GenericPrincipal; import org.apache.commons.lang.StringUtils; @@ -43,47 +38,40 @@ import com.netscape.cms.servlet.base.PKIService; */ public class AccountService extends PKIService implements AccountResource { - @Context - private UriInfo uriInfo; - - @Context - private HttpHeaders headers; - - @Context - private Request request; - - @Context - private HttpServletRequest servletRequest; - - @Override - public Response login() { - HttpSession session = servletRequest.getSession(); - System.out.println("Creating session "+session.getId()); - + protected AccountInfo createAccountInfo() { Principal principal = servletRequest.getUserPrincipal(); - System.out.println("Principal: "+principal); + System.out.println("Principal: " + principal); - AccountInfo response = new AccountInfo(); + AccountInfo accountInfo = new AccountInfo(); String name = principal.getName(); - response.setID(name); + accountInfo.setID(name); if (principal instanceof PKIPrincipal) { PKIPrincipal pkiPrincipal = (PKIPrincipal)principal; IUser user = pkiPrincipal.getUser(); String fullName = user.getFullName(); - if (!StringUtils.isEmpty(fullName)) response.setFullName(fullName); + if (!StringUtils.isEmpty(fullName)) accountInfo.setFullName(fullName); String email = user.getEmail(); - if (!StringUtils.isEmpty(email)) response.setEmail(email); + if (!StringUtils.isEmpty(email)) accountInfo.setEmail(email); } if (principal instanceof GenericPrincipal) { String[] roles = ((GenericPrincipal) principal).getRoles(); - response.setRoles(Arrays.asList(roles)); + accountInfo.setRoles(Arrays.asList(roles)); } - return createOKResponse(response); + return accountInfo; + } + + @Override + public Response login() { + HttpSession session = servletRequest.getSession(); + System.out.println("Creating session " + session.getId()); + + AccountInfo accountInfo = createAccountInfo(); + return createOKResponse(accountInfo); } @Override -- 1.8.3.1