Browse Source
Merge pull request #14156 from dashevchenko/tenantDeletion
Added API for tenant admins to delete the entire tenant
pull/14199/head
Viacheslav Klimov
8 months ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with
25 additions and
2 deletions
application/src/main/java/org/thingsboard/server/controller/TenantController.java
application/src/main/java/org/thingsboard/server/service/security/permission/TenantAdminPermissions.java
application/src/test/java/org/thingsboard/server/controller/TenantControllerTest.java
@ -115,7 +115,7 @@ public class TenantController extends BaseController {
@ApiOperation ( value = "Delete Tenant (deleteTenant)" ,
notes = "Deletes the tenant, it's customers, rule chains, devices and all other related entities. Referencing non-existing tenant Id will cause an error." + SYSTEM_AUTHORITY_PARAGRAPH )
@PreAuthorize ( "hasAuthority('SYS_ADMIN')" )
@PreAuthorize ( "hasAnyA uthority('SYS_ADMIN', 'TENANT _ADMIN')" )
@RequestMapping ( value = "/tenant/{tenantId}" , method = RequestMethod . DELETE )
@ResponseStatus ( value = HttpStatus . OK )
public void deleteTenant ( @Parameter ( description = TENANT_ID_PARAM_DESCRIPTION )
@ -73,7 +73,7 @@ public class TenantAdminPermissions extends AbstractPermissions {
} ;
private static final PermissionChecker tenantPermissionChecker =
new PermissionChecker . GenericPermissionChecker ( Operation . READ , Operation . READ_ATTRIBUTES , Operation . READ_TELEMETRY ) {
new PermissionChecker . GenericPermissionChecker ( Operation . READ , Operation . READ_ATTRIBUTES , Operation . READ_TELEMETRY , Operation . DELETE ) {
@Override
@SuppressWarnings ( "unchecked" )
@ -243,6 +243,29 @@ public class TenantControllerTest extends AbstractControllerTest {
. andExpect ( statusReason ( containsString ( msgErrorNoFound ( "Tenant" , tenantIdStr ) ) ) ) ;
}
@Test
public void testDeleteTenantByTenantAdmin ( ) throws Exception {
loginSysAdmin ( ) ;
Tenant tenant = new Tenant ( ) ;
tenant . setTitle ( "My tenant" ) ;
Tenant savedTenant = saveTenant ( tenant ) ;
//login as tenant admin
User tenantAdminUser = new User ( ) ;
tenantAdminUser . setAuthority ( Authority . TENANT_ADMIN ) ;
tenantAdminUser . setTenantId ( savedTenant . getId ( ) ) ;
tenantAdminUser . setEmail ( "tenantToDelete@thingsboard.io" ) ;
createUserAndLogin ( tenantAdminUser , TENANT_ADMIN_PASSWORD ) ;
String tenantIdStr = savedTenant . getId ( ) . getId ( ) . toString ( ) ;
deleteTenant ( savedTenant . getId ( ) ) ;
loginSysAdmin ( ) ;
doGet ( "/api/tenant/" + tenantIdStr )
. andExpect ( status ( ) . isNotFound ( ) )
. andExpect ( statusReason ( containsString ( msgErrorNoFound ( "Tenant" , tenantIdStr ) ) ) ) ;
}
@Test
public void testFindTenants ( ) throws Exception {
loginSysAdmin ( ) ;