From 3e361a238588066aebb55d8bbb2035fd1dc1962c Mon Sep 17 00:00:00 2001 From: prachi Date: Tue, 20 Mar 2012 17:05:46 -0700 Subject: [PATCH] Bug 14336 - Login API does not return UUID's Changes done: - Provide UUID for userid and domainid only while constructing the login response. Session will hold the DB id's as before, to ensure other parts keep working. - This reverts commit de28aa3ddde5b601f2f234f2eccef871fbaf1a06. Conflicts: server/src/com/cloud/api/ApiServer.java --- server/src/com/cloud/api/ApiServer.java | 12 +++++++++ server/src/com/cloud/api/ApiServlet.java | 31 +++++++++++++++++++----- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/server/src/com/cloud/api/ApiServer.java b/server/src/com/cloud/api/ApiServer.java index dd1eb2e4f46..b5d97dd45c3 100755 --- a/server/src/com/cloud/api/ApiServer.java +++ b/server/src/com/cloud/api/ApiServer.java @@ -106,6 +106,7 @@ import com.cloud.user.DomainManager; import com.cloud.user.User; import com.cloud.user.UserAccount; import com.cloud.user.UserContext; +import com.cloud.user.UserVO; import com.cloud.utils.Pair; import com.cloud.utils.PropertiesUtil; import com.cloud.utils.component.ComponentLocator; @@ -785,12 +786,23 @@ public class ApiServer implements HttpRequestHandler { // set the userId and account object for everyone session.setAttribute("userid", userAcct.getId()); + UserVO user = (UserVO) _accountMgr.getActiveUser(userAcct.getId()); + if(user.getUuid() != null){ + session.setAttribute("user_UUID", user.getUuid()); + } + session.setAttribute("username", userAcct.getUsername()); session.setAttribute("firstname", userAcct.getFirstname()); session.setAttribute("lastname", userAcct.getLastname()); session.setAttribute("accountobj", account); session.setAttribute("account", account.getAccountName()); + session.setAttribute("domainid", account.getDomainId()); + DomainVO domain = (DomainVO) _domainMgr.getDomain(account.getDomainId()); + if(domain.getUuid() != null){ + session.setAttribute("domain_UUID", domain.getUuid()); + } + session.setAttribute("type", Short.valueOf(account.getType()).toString()); session.setAttribute("registrationtoken", userAcct.getRegistrationToken()); session.setAttribute("registered", new Boolean(userAcct.isRegistered()).toString()); diff --git a/server/src/com/cloud/api/ApiServlet.java b/server/src/com/cloud/api/ApiServlet.java index 66cf7fd69fa..421707d09e8 100755 --- a/server/src/com/cloud/api/ApiServlet.java +++ b/server/src/com/cloud/api/ApiServlet.java @@ -378,6 +378,13 @@ public class ApiServlet extends HttpServlet { private String getLoginSuccessResponse(HttpSession session, String responseType) { StringBuffer sb = new StringBuffer(); int inactiveInterval = session.getMaxInactiveInterval(); + + String user_UUID = (String)session.getAttribute("user_UUID"); + session.removeAttribute("user_UUID"); + + String domain_UUID = (String)session.getAttribute("domain_UUID"); + session.removeAttribute("domain_UUID"); + if (BaseCmd.RESPONSE_TYPE_JSON.equalsIgnoreCase(responseType)) { sb.append("{ \"loginresponse\" : { "); @@ -386,9 +393,15 @@ public class ApiServlet extends HttpServlet { sb.append("\"timeout\" : \"" + inactiveInterval + "\""); while (attrNames.hasMoreElements()) { String attrName = (String) attrNames.nextElement(); - Object attrObj = session.getAttribute(attrName); - if ((attrObj instanceof String) || (attrObj instanceof Long)) { - sb.append(", \"" + attrName + "\" : \"" + attrObj.toString() + "\""); + if("userid".equalsIgnoreCase(attrName)){ + sb.append(", \"" + attrName + "\" : \"" + user_UUID + "\""); + }else if("domainid".equalsIgnoreCase(attrName)){ + sb.append(", \"" + attrName + "\" : \"" + domain_UUID + "\""); + }else{ + Object attrObj = session.getAttribute(attrName); + if ((attrObj instanceof String) || (attrObj instanceof Long)) { + sb.append(", \"" + attrName + "\" : \"" + attrObj.toString() + "\""); + } } } } @@ -400,9 +413,15 @@ public class ApiServlet extends HttpServlet { if (attrNames != null) { while (attrNames.hasMoreElements()) { String attrName = (String) attrNames.nextElement(); - Object attrObj = session.getAttribute(attrName); - if (attrObj instanceof String || attrObj instanceof Long || attrObj instanceof Short) { - sb.append("<" + attrName + ">" + attrObj.toString() + ""); + if("userid".equalsIgnoreCase(attrName)){ + sb.append("<" + attrName + ">" + user_UUID + ""); + }else if("domainid".equalsIgnoreCase(attrName)){ + sb.append("<" + attrName + ">" + domain_UUID + ""); + }else{ + Object attrObj = session.getAttribute(attrName); + if (attrObj instanceof String || attrObj instanceof Long || attrObj instanceof Short) { + sb.append("<" + attrName + ">" + attrObj.toString() + ""); + } } } }