diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/UserManagementService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/UserManagementService.java index 7ea6d8d5c5..1a5e3440ef 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/UserManagementService.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/UserManagementService.java @@ -142,6 +142,11 @@ public interface UserManagementService { value = "Username of the user to be fetched.", required = true) @PathParam("username") String username, + @ApiParam( + name = "domain", + value = "Domain name of the user store.", + required = false) + @QueryParam("domain") String domain, @ApiParam( name = "If-Modified-Since", value = "Validates if the requested variant has not been modified since the time specified", @@ -199,6 +204,11 @@ public interface UserManagementService { value = "Username of the user to be updated.", required = true) @PathParam("username") String username, + @ApiParam( + name = "domain", + value = "Domain name of the user store.", + required = false) + @QueryParam("domain") String domain, @ApiParam( name = "userData", value = "User related details.", @@ -230,7 +240,12 @@ public interface UserManagementService { @Permission(name = "Manage Users", permission = "/device-mgt/users/manage") Response removeUser( @ApiParam(name = "username", value = "Username of the user to be deleted.", required = true) - @PathParam("username") String username); + @PathParam("username") String username, + @ApiParam( + name = "domain", + value = "Domain name of the user store.", + required = false) + @QueryParam("domain") String domain); @GET @Path("/{username}/roles") @@ -279,7 +294,12 @@ public interface UserManagementService { @Permission(name = "View Users", permission = "/device-mgt/users/view") Response getRolesOfUser( @ApiParam(name = "username", value = "Username of the user.", required = true) - @PathParam("username") String username); + @PathParam("username") String username, + @ApiParam( + name = "domain", + value = "Domain name of the user store.", + required = false) + @QueryParam("domain") String domain); @GET @ApiOperation( diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/UserManagementAdminService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/UserManagementAdminService.java index 6b18ea8367..026910d8e2 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/UserManagementAdminService.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/UserManagementAdminService.java @@ -78,6 +78,11 @@ public interface UserManagementAdminService { @PathParam("username") @Size(max = 45) String username, + @ApiParam( + name = "domain", + value = "Domain name of the user store.", + required = false) + @QueryParam("domain") String domain, @ApiParam( name = "credentials", value = "Credential.", diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/UserManagementServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/UserManagementServiceImpl.java index 43f52d812a..8ec2f898df 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/UserManagementServiceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/UserManagementServiceImpl.java @@ -105,8 +105,11 @@ public class UserManagementServiceImpl implements UserManagementService { @GET @Path("/{username}") @Override - public Response getUser(@PathParam("username") String username, + public Response getUser(@PathParam("username") String username, @QueryParam("domain") String domain, @HeaderParam("If-Modified-Since") String ifModifiedSince) { + if (domain != null && !domain.isEmpty()) { + username = domain + '/' + username; + } try { UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); if (!userStoreManager.isExistingUser(username)) { @@ -131,7 +134,10 @@ public class UserManagementServiceImpl implements UserManagementService { @PUT @Path("/{username}") @Override - public Response updateUser(@PathParam("username") String username, UserInfo userInfo) { + public Response updateUser(@PathParam("username") String username, @QueryParam("domain") String domain, UserInfo userInfo) { + if (domain != null && !domain.isEmpty()) { + username = domain + '/' + username; + } try { UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); if (!userStoreManager.isExistingUser(username)) { @@ -205,7 +211,10 @@ public class UserManagementServiceImpl implements UserManagementService { @DELETE @Path("/{username}") @Override - public Response removeUser(@PathParam("username") String username) { + public Response removeUser(@PathParam("username") String username, @QueryParam("domain") String domain) { + if (domain != null && !domain.isEmpty()) { + username = domain + '/' + username; + } try { UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); if (!userStoreManager.isExistingUser(username)) { @@ -233,7 +242,10 @@ public class UserManagementServiceImpl implements UserManagementService { @GET @Path("/{username}/roles") @Override - public Response getRolesOfUser(@PathParam("username") String username) { + public Response getRolesOfUser(@PathParam("username") String username, @QueryParam("domain") String domain) { + if (domain != null && !domain.isEmpty()) { + username = domain + '/' + username; + } try { UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); if (!userStoreManager.isExistingUser(username)) { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/UserManagementAdminServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/UserManagementAdminServiceImpl.java index 5fad04b0d9..d268eff282 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/UserManagementAdminServiceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/UserManagementAdminServiceImpl.java @@ -37,7 +37,10 @@ public class UserManagementAdminServiceImpl implements UserManagementAdminServic @Override public Response resetUserPassword(@PathParam("username") @Size(max = 45) - String user, PasswordResetWrapper credentials) { + String user, @QueryParam("domain") String domain, PasswordResetWrapper credentials) { + if (domain != null && !domain.isEmpty()) { + user = domain + '/' + user; + } return CredentialManagementResponseBuilder.buildResetPasswordResponse(user, credentials); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/business-controllers/user.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/business-controllers/user.js index 43e30b530c..b229ab8ef8 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/business-controllers/user.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/business-controllers/user.js @@ -177,10 +177,18 @@ var userModule = function () { */ publicMethods.getUser = function (username) { var carbonUser = privateMethods.getCarbonUser(); + var domain; + if (username.indexOf('/') > 0) { + domain = username.substr(0, username.indexOf('/')); + username = username.substr(username.indexOf('/') + 1); + } try { utility.startTenantFlow(carbonUser); var url = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] + "/users/" + encodeURIComponent(username); + if (domain) { + url += '?domain=' + domain; + } var response = privateMethods.callBackend(url, constants["HTTP_GET"]); response["content"] = parse(response.content); response["userDomain"] = carbonUser.domain; @@ -199,10 +207,18 @@ var userModule = function () { */ publicMethods.getRolesByUsername = function (username) { var carbonUser = privateMethods.getCarbonUser(); + var domain; + if (username.indexOf('/') > 0) { + domain = username.substr(0, username.indexOf('/')); + username = username.substr(username.indexOf('/') + 1); + } try { utility.startTenantFlow(carbonUser); var url = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] + "/users/" + encodeURIComponent(username) + "/roles"; + if (domain) { + url += '?domain=' + domain; + } var response = privateMethods.callBackend(url, constants["HTTP_GET"]); if (response.status == "success") { response.content = parse(response.content).roles; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.user.edit/public/js/bottomJs.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.user.edit/public/js/bottomJs.js index 295195e3f7..00357909e6 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.user.edit/public/js/bottomJs.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.user.edit/public/js/bottomJs.js @@ -235,8 +235,8 @@ $(document).ready(function () { roles = []; } addUserFormData.roles = roles; - - var addUserAPI = deviceMgtBasePath + "/users/" + username; + username = username.substr(username.indexOf('/') + 1); + var addUserAPI = deviceMgtBasePath + "/users/" + username + "?domain=" + domain; invokerUtil.put( addUserAPI, diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.users/public/js/listing.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.users/public/js/listing.js index 2d5b88e35b..91783daadb 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.users/public/js/listing.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.users/public/js/listing.js @@ -162,9 +162,15 @@ function resetPassword(username) { } else { var resetPasswordFormData = {}; resetPasswordFormData.newPassword = unescape(confirmedPassword); - - var resetPasswordServiceURL = apiBasePath + "/admin/users/"+ username +"/credentials"; - + var domain; + if (username.indexOf('/') > 0) { + domain = username.substr(0, username.indexOf('/')); + username = username.substr(username.indexOf('/') + 1); + } + var resetPasswordServiceURL = apiBasePath + "/admin/users/" + username + "/credentials"; + if (domain) { + resetPasswordServiceURL += '?domain=' + domain; + } invokerUtil.post( resetPasswordServiceURL, resetPasswordFormData, @@ -198,7 +204,15 @@ function resetPassword(username) { * on User Listing page in WSO2 MDM Console. */ function removeUser(username) { + var domain; + if (username.indexOf('/') > 0) { + domain = username.substr(0, username.indexOf('/')); + username = username.substr(username.indexOf('/') + 1); + } var removeUserAPI = apiBasePath + "/users/" + username; + if (domain) { + removeUserAPI += '?domain=' + domain; + } $(modalPopupContent).html($('#remove-user-modal-content').html()); showPopup(); @@ -207,7 +221,11 @@ function removeUser(username) { removeUserAPI, function (data, textStatus, jqXHR) { if (jqXHR.status == 200) { - $("#user-" + username).remove(); + if (domain) { + $("#user-" + domain + "\\/" + username).remove(); + } else { + $("#user-" + username).remove(); + } // update modal-content with success message $(modalPopupContent).html($('#remove-user-success-content').html()); $("a#remove-user-success-link").click(function () { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.header.user-menu/public/js/user-menu.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.header.user-menu/public/js/user-menu.js index a622f40543..420abf5d83 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.header.user-menu/public/js/user-menu.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.header.user-menu/public/js/user-menu.js @@ -66,9 +66,7 @@ $(document).ready(function () { var changePasswordFormData = {}; changePasswordFormData["oldPassword"] = unescape((currentPassword)); changePasswordFormData["newPassword"] = unescape((newPassword)); - - var changePasswordAPI = "/api/device-mgt/v1.0/users/" + user + "/credentials"; - + var changePasswordAPI = "/api/device-mgt/v1.0/users/credentials"; invokerUtil.put( changePasswordAPI, changePasswordFormData, diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.header.user-menu/user-menu.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.header.user-menu/user-menu.hbs index eb958f6bfc..d2aba63fdc 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.header.user-menu/user-menu.hbs +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.header.user-menu/user-menu.hbs @@ -46,7 +46,7 @@