diff --git a/server/src/com/cloud/servlet/RegisterCompleteServlet.java b/server/src/com/cloud/servlet/RegisterCompleteServlet.java index c5b4e49ffda..a9c70d74ae7 100644 --- a/server/src/com/cloud/servlet/RegisterCompleteServlet.java +++ b/server/src/com/cloud/servlet/RegisterCompleteServlet.java @@ -80,6 +80,7 @@ public class RegisterCompleteServlet extends HttpServlet implements ServletConte @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) { String registrationToken = req.getParameter("token"); + String expires = req.getParameter("expires"); int statusCode = HttpServletResponse.SC_OK; String responseMessage = null; @@ -90,29 +91,34 @@ public class RegisterCompleteServlet extends HttpServlet implements ServletConte s_logger.info("Attempting to register user account with token = "+registrationToken); User resourceAdminUser = _accountSvc.getActiveUserByRegistrationToken(registrationToken); if (resourceAdminUser != null) { - if(!resourceAdminUser.isRegistered()){ - _accountSvc.markUserRegistered(resourceAdminUser.getId()); + if(resourceAdminUser.isRegistered()) { + statusCode = 503; + responseMessage = "{ \"registration_info\" : { \"errorcode\" : \"503\", \"errortext\" : \"Expired token = " + registrationToken + "\" } }"; + } else { + if(expires != null && expires.toLowerCase().equals("true")){ + _accountSvc.markUserRegistered(resourceAdminUser.getId()); + } + + Account resourceAdminAccount = _accountSvc.getActiveAccount(resourceAdminUser.getAccountId()); + Account rsUserAccount = _accountSvc.getActiveAccount(resourceAdminAccount.getAccountName()+"-user", resourceAdminAccount.getDomainId()); + + List users = _userDao.listByAccount(rsUserAccount.getId()); + User rsUser = users.get(0); + + Configuration config = _configDao.findByName("endpointe.url"); + + StringBuffer sb = new StringBuffer(); + sb.append("{ \"registration_info\" : { \"endpoint_url\" : \""+encodeParam(config.getValue())+"\", "); + sb.append("\"domain_id\" : \""+resourceAdminAccount.getDomainId()+"\", "); + sb.append("\"admin_account\" : \""+encodeParam(resourceAdminUser.getUsername())+"\", "); + sb.append("\"admin_account_api_key\" : \""+resourceAdminUser.getApiKey()+"\", "); + sb.append("\"admin_account_secret_key\" : \""+resourceAdminUser.getSecretKey()+"\", "); + sb.append("\"user_account\" : \""+encodeParam(rsUser.getUsername())+"\", "); + sb.append("\"user_account_api_key\" : \""+rsUser.getApiKey()+"\", "); + sb.append("\"user_account_secret_key\" : \""+rsUser.getSecretKey()+"\" "); + sb.append("} }"); + responseMessage = sb.toString(); } - - Account resourceAdminAccount = _accountSvc.getActiveAccount(resourceAdminUser.getAccountId()); - Account rsUserAccount = _accountSvc.getActiveAccount(resourceAdminAccount.getAccountName()+"-user", resourceAdminAccount.getDomainId()); - - List users = _userDao.listByAccount(rsUserAccount.getId()); - User rsUser = users.get(0); - - Configuration config = _configDao.findByName("endpointe.url"); - - StringBuffer sb = new StringBuffer(); - sb.append("{ \"registration_info\" : { \"endpoint_url\" : \""+encodeParam(config.getValue())+"\", "); - sb.append("\"domain_id\" : \""+resourceAdminAccount.getDomainId()+"\", "); - sb.append("\"admin_account\" : \""+encodeParam(resourceAdminUser.getUsername())+"\", "); - sb.append("\"admin_account_api_key\" : \""+resourceAdminUser.getApiKey()+"\", "); - sb.append("\"admin_account_secret_key\" : \""+resourceAdminUser.getSecretKey()+"\", "); - sb.append("\"user_account\" : \""+encodeParam(rsUser.getUsername())+"\", "); - sb.append("\"user_account_api_key\" : \""+rsUser.getApiKey()+"\", "); - sb.append("\"user_account_secret_key\" : \""+rsUser.getSecretKey()+"\" "); - sb.append("} }"); - responseMessage = sb.toString(); } else { statusCode = 503; responseMessage = "{ \"registration_info\" : { \"errorcode\" : \"503\", \"errortext\" : \"Invalid token = " + registrationToken + "\" } }"; diff --git a/server/src/com/cloud/user/AccountManagerImpl.java b/server/src/com/cloud/user/AccountManagerImpl.java index 01c51146a87..82fae0a8f38 100755 --- a/server/src/com/cloud/user/AccountManagerImpl.java +++ b/server/src/com/cloud/user/AccountManagerImpl.java @@ -1800,7 +1800,6 @@ public class AccountManagerImpl implements AccountManager, AccountService, Manag public void markUserRegistered(long userId) { UserVO userForUpdate = _userDao.createForUpdate(); userForUpdate.setRegistered(true); - userForUpdate.setRegistrationToken(null); _userDao.update(Long.valueOf(userId), userForUpdate); } }