diff --git a/doc/Programming-guide/Server-REST-APIs/swagger.json b/doc/Programming-guide/Server-REST-APIs/swagger.json index 2fc4df6524..c96fdaf6ef 100644 --- a/doc/Programming-guide/Server-REST-APIs/swagger.json +++ b/doc/Programming-guide/Server-REST-APIs/swagger.json @@ -639,6 +639,46 @@ } } }, + "/api/admins/{tenantId}" : { + "post" : { + "tags" : [ "User" ], + "summary" : "Select tenant admins by tenant id", + "description" : "", + "operationId" : "findAllTenantAdminsByTenantId", + "parameters" : [ { + "name" : "", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "successful operation", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/UserDto" + } + } + }, + "400" : { + "description" : "The specified tenantId is not valid" + }, + "401" : { + "description" : "The user is not authenticated or invalid credentials were provided" + }, + "403" : { + "description" : "The authenticated user does not have the required TENANT_ADMIN role or the Tenant ID of the editing user does not match the Tenant ID of the authenticated user" + }, + "404" : { + "description" : "The user with the specified tenantId does not exist" + }, + "500" : { + "description" : "An unexpected error occurred on the server side" + } + } + } + }, "/api/application" : { "post" : { "tags" : [ "Application" ], diff --git a/pom.xml b/pom.xml index d591e9d6a4..5da59c6c62 100644 --- a/pom.xml +++ b/pom.xml @@ -76,7 +76,6 @@ Copyright 2014-2016 CyberVision, Inc. 4.3.2 2.4.1 1.1.0.Final - 5.2.2.Final 2.2 4.11 1.42 @@ -135,7 +134,7 @@ Copyright 2014-2016 CyberVision, Inc. 3.1.3 1.5.9 2.2.4 - 2.2.4 + 2.2.6 5.2.4.Final diff --git a/server/common/admin-rest-client/src/main/java/org/kaaproject/kaa/server/common/admin/AdminClient.java b/server/common/admin-rest-client/src/main/java/org/kaaproject/kaa/server/common/admin/AdminClient.java index 0f1599f2fe..aa9fbb5994 100644 --- a/server/common/admin-rest-client/src/main/java/org/kaaproject/kaa/server/common/admin/AdminClient.java +++ b/server/common/admin-rest-client/src/main/java/org/kaaproject/kaa/server/common/admin/AdminClient.java @@ -180,6 +180,14 @@ public List getTenants() throws Exception { return entity.getBody(); } + + public List getAllTenantAdminsBytenantId(String tenantId){ + ParameterizedTypeReference> typeRef = new ParameterizedTypeReference>() { + }; + ResponseEntity> entity = restTemplate.exchange(restTemplate.getUrl() + "admins/" + tenantId, HttpMethod.GET, null, typeRef); + return entity.getBody(); + } + public TenantDto getTenant(String userId) throws Exception { return restTemplate.getForObject(restTemplate.getUrl() + "tenant/" + userId, TenantDto.class); } diff --git a/server/node/src/main/java/org/kaaproject/kaa/server/admin/client/mvp/data/DataSource.java b/server/node/src/main/java/org/kaaproject/kaa/server/admin/client/mvp/data/DataSource.java index 0cb9acc3bb..f033c7a7ac 100644 --- a/server/node/src/main/java/org/kaaproject/kaa/server/admin/client/mvp/data/DataSource.java +++ b/server/node/src/main/java/org/kaaproject/kaa/server/admin/client/mvp/data/DataSource.java @@ -147,7 +147,7 @@ protected void onResult(UserDto result) { public void loadAllTenantAdminsByTenantId(String tenantId, final AsyncCallback> callback) { - tenantRpcService.findAllTenantAdminsByTenantId(tenantId, new DataCallback>( + userRpcService.findAllTenantAdminsByTenantId(tenantId, new DataCallback>( callback) { @Override protected void onResult(List result) { diff --git a/server/node/src/main/java/org/kaaproject/kaa/server/admin/controller/AbstractAdminController.java b/server/node/src/main/java/org/kaaproject/kaa/server/admin/controller/AbstractAdminController.java index 45ba961527..5cf219cab4 100644 --- a/server/node/src/main/java/org/kaaproject/kaa/server/admin/controller/AbstractAdminController.java +++ b/server/node/src/main/java/org/kaaproject/kaa/server/admin/controller/AbstractAdminController.java @@ -36,6 +36,7 @@ import org.kaaproject.kaa.server.admin.shared.services.TenantService; import org.kaaproject.kaa.server.admin.shared.services.UserService; import org.kaaproject.kaa.server.admin.shared.services.VerifierService; +import org.kaaproject.kaa.server.control.service.ControlService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -156,6 +157,11 @@ public abstract class AbstractAdminController { */ @Autowired UserFacade userFacade; + /** + * The control service. + */ + @Autowired + ControlService controlService; /** * The password encoder. diff --git a/server/node/src/main/java/org/kaaproject/kaa/server/admin/controller/UserController.java b/server/node/src/main/java/org/kaaproject/kaa/server/admin/controller/UserController.java index 62528be260..66836bb0ad 100644 --- a/server/node/src/main/java/org/kaaproject/kaa/server/admin/controller/UserController.java +++ b/server/node/src/main/java/org/kaaproject/kaa/server/admin/controller/UserController.java @@ -271,4 +271,23 @@ public void deleteUser( @RequestParam(value = "userId") String userId) throws KaaAdminServiceException { userService.deleteUser(userId); } + + + @ApiOperation(value = "Select tenant admins by tenant id") + @ApiResponses(value = { + @ApiResponse(code = 400, message = "The specified tenantId is not valid"), + @ApiResponse(code = 401, message = "The user is not authenticated or invalid credentials were provided"), + @ApiResponse(code = 403, message = "The authenticated user does not have the required TENANT_ADMIN role or the Tenant ID of the editing user " + + "does not match the Tenant ID of the authenticated user"), + @ApiResponse(code = 404, message = "The user with the specified tenantId does not exist"), + @ApiResponse(code = 500, message = "An unexpected error occurred on the server side")}) + @RequestMapping(value = "admins/{tenantId}", method = RequestMethod.POST) + @ResponseStatus(value = HttpStatus.OK) + public List findAllTenantAdminsByTenantId( + @PathVariable String tenantId) throws KaaAdminServiceException { + return userService.findAllTenantAdminsByTenantId(tenantId); + } + + + } diff --git a/server/node/src/main/java/org/kaaproject/kaa/server/admin/services/TenantServiceImpl.java b/server/node/src/main/java/org/kaaproject/kaa/server/admin/services/TenantServiceImpl.java index 8b8dea1f27..2a60c56f5d 100644 --- a/server/node/src/main/java/org/kaaproject/kaa/server/admin/services/TenantServiceImpl.java +++ b/server/node/src/main/java/org/kaaproject/kaa/server/admin/services/TenantServiceImpl.java @@ -83,20 +83,5 @@ public void deleteTenant(String tenantId) throws KaaAdminServiceException { } } - @Override - public List findAllTenantAdminsByTenantId(String tenantId) throws KaaAdminServiceException { - checkAuthority(KaaAuthorityDto.KAA_ADMIN); - List tenantAdminList=new ArrayList<>(); - try { - List userDtoList=controlService.findAllTenantAdminsByTenantId(tenantId); - if(userDtoList!=null){ - for(UserDto userDto:userDtoList) - tenantAdminList.add(toUser(userDto)); - } - } catch (Exception e) { - throw Utils.handleException(e); - } - return tenantAdminList; - } } diff --git a/server/node/src/main/java/org/kaaproject/kaa/server/admin/services/UserServiceImpl.java b/server/node/src/main/java/org/kaaproject/kaa/server/admin/services/UserServiceImpl.java index 0c50902e0c..ed5741a887 100644 --- a/server/node/src/main/java/org/kaaproject/kaa/server/admin/services/UserServiceImpl.java +++ b/server/node/src/main/java/org/kaaproject/kaa/server/admin/services/UserServiceImpl.java @@ -145,6 +145,23 @@ public void deleteUser(String userId) throws KaaAdminServiceException { } } + @Override + public List findAllTenantAdminsByTenantId(String tenantId) throws KaaAdminServiceException { + checkAuthority(KaaAuthorityDto.KAA_ADMIN); + List tenantAdminList=new ArrayList<>(); + try { + List userDtoList=controlService.findAllTenantAdminsByTenantId(tenantId); + if(userDtoList!=null){ + for(UserDto userDto:userDtoList) + tenantAdminList.add(toUser(userDto)); + } + } catch (Exception e) { + throw Utils.handleException(e); + } + return tenantAdminList; + } + + private void checkUserProfile(UserProfileUpdateDto userProfileUpdateDto) throws KaaAdminServiceException { if (isEmpty(userProfileUpdateDto.getFirstName())) { throw new IllegalArgumentException("First name is not valid."); diff --git a/server/node/src/main/java/org/kaaproject/kaa/server/admin/shared/services/TenantService.java b/server/node/src/main/java/org/kaaproject/kaa/server/admin/shared/services/TenantService.java index ebc370b939..049c495531 100644 --- a/server/node/src/main/java/org/kaaproject/kaa/server/admin/shared/services/TenantService.java +++ b/server/node/src/main/java/org/kaaproject/kaa/server/admin/shared/services/TenantService.java @@ -34,5 +34,4 @@ public interface TenantService extends RemoteService { void deleteTenant(String tenantId) throws KaaAdminServiceException; - List findAllTenantAdminsByTenantId(String id) throws KaaAdminServiceException; } diff --git a/server/node/src/main/java/org/kaaproject/kaa/server/admin/shared/services/UserService.java b/server/node/src/main/java/org/kaaproject/kaa/server/admin/shared/services/UserService.java index 403accd95a..07bf5dbeb4 100644 --- a/server/node/src/main/java/org/kaaproject/kaa/server/admin/shared/services/UserService.java +++ b/server/node/src/main/java/org/kaaproject/kaa/server/admin/shared/services/UserService.java @@ -37,4 +37,6 @@ public interface UserService extends RemoteService { UserDto editUser(UserDto user) throws KaaAdminServiceException; void deleteUser(String userId) throws KaaAdminServiceException; + + List findAllTenantAdminsByTenantId(String id) throws KaaAdminServiceException; }