fixes
This commit is contained in:
		
							parent
							
								
									b09967074e
								
							
						
					
					
						commit
						e644def232
					
				@ -162,11 +162,11 @@ public class SystemInfoController extends BaseController {
 | 
			
		||||
            }
 | 
			
		||||
            systemParams.setMaxArgumentsPerCF(tenantProfileConfiguration.getMaxArgumentsPerCF());
 | 
			
		||||
            systemParams.setMaxDataPointsPerRollingArg(tenantProfileConfiguration.getMaxDataPointsPerRollingArg());
 | 
			
		||||
            systemParams.setTrendzSettings(trendzSettingsService.findTrendzSettings(currentUser.getTenantId()));
 | 
			
		||||
        }
 | 
			
		||||
        systemParams.setMobileQrEnabled(Optional.ofNullable(qrCodeSettingService.findQrCodeSettings(TenantId.SYS_TENANT_ID))
 | 
			
		||||
                .map(QrCodeSettings::getQrCodeConfig).map(QRCodeConfig::isShowOnHomePage)
 | 
			
		||||
                .orElse(false));
 | 
			
		||||
        systemParams.setTrendzSettings(trendzSettingsService.findTrendzSettings(currentUser.getTenantId()));
 | 
			
		||||
        return systemParams;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -36,7 +36,8 @@ import org.thingsboard.server.service.security.permission.Resource;
 | 
			
		||||
import static org.thingsboard.server.controller.ControllerConstants.MARKDOWN_CODE_BLOCK_END;
 | 
			
		||||
import static org.thingsboard.server.controller.ControllerConstants.MARKDOWN_CODE_BLOCK_START;
 | 
			
		||||
import static org.thingsboard.server.controller.ControllerConstants.NEW_LINE;
 | 
			
		||||
import static org.thingsboard.server.controller.ControllerConstants.SYSTEM_OR_TENANT_AUTHORITY_PARAGRAPH;
 | 
			
		||||
import static org.thingsboard.server.controller.ControllerConstants.TENANT_AUTHORITY_PARAGRAPH;
 | 
			
		||||
import static org.thingsboard.server.controller.ControllerConstants.TENANT_OR_CUSTOMER_AUTHORITY_PARAGRAPH;
 | 
			
		||||
 | 
			
		||||
@RestController
 | 
			
		||||
@TbCoreComponent
 | 
			
		||||
@ -47,33 +48,32 @@ public class TrendzController extends BaseController {
 | 
			
		||||
    private final TrendzSettingsService trendzSettingsService;
 | 
			
		||||
 | 
			
		||||
    @ApiOperation(value = "Save Trendz settings (saveTrendzSettings)",
 | 
			
		||||
            notes = "Saves Trendz settings for this tenant or sysadmin.\n" + NEW_LINE +
 | 
			
		||||
            notes = "Saves Trendz settings for this tenant.\n" + NEW_LINE +
 | 
			
		||||
                    "Here is an example of the Trendz settings:\n" +
 | 
			
		||||
                    MARKDOWN_CODE_BLOCK_START +
 | 
			
		||||
                    "{\n" +
 | 
			
		||||
                    "  \"enabled\": true,\n" +
 | 
			
		||||
                    "  \"trendzUrl\": \"https://some.domain.com:18888/also_necessary_prefix\"\n" +
 | 
			
		||||
                    "  \"baseUrl\": \"https://some.domain.com:18888/also_necessary_prefix\"\n" +
 | 
			
		||||
                    "}" +
 | 
			
		||||
                    MARKDOWN_CODE_BLOCK_END +
 | 
			
		||||
                    SYSTEM_OR_TENANT_AUTHORITY_PARAGRAPH)
 | 
			
		||||
                    TENANT_AUTHORITY_PARAGRAPH)
 | 
			
		||||
    @PostMapping("/trendz/settings")
 | 
			
		||||
    @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')")
 | 
			
		||||
    @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')")
 | 
			
		||||
    public TrendzSettings saveTrendzSettings(@RequestBody TrendzSettings trendzSettings,
 | 
			
		||||
                                             @AuthenticationPrincipal SecurityUser user) throws ThingsboardException {
 | 
			
		||||
        accessControlService.checkPermission(user, Resource.TRENDZ_SETTINGS, Operation.WRITE);
 | 
			
		||||
        TenantId tenantId = user.isSystemAdmin() ? TenantId.SYS_TENANT_ID : user.getTenantId();
 | 
			
		||||
        accessControlService.checkPermission(user, Resource.ADMIN_SETTINGS, Operation.WRITE);
 | 
			
		||||
        TenantId tenantId = user.getTenantId();
 | 
			
		||||
        trendzSettingsService.saveTrendzSettings(tenantId, trendzSettings);
 | 
			
		||||
        return trendzSettings;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ApiOperation(value = "Get Trendz Settings (getTrendzSettings)",
 | 
			
		||||
            notes = "Retrieves trendz settings for this tenant or sysadmin." +
 | 
			
		||||
                    SYSTEM_OR_TENANT_AUTHORITY_PARAGRAPH)
 | 
			
		||||
            notes = "Retrieves Trendz settings for this tenant." +
 | 
			
		||||
                    TENANT_OR_CUSTOMER_AUTHORITY_PARAGRAPH)
 | 
			
		||||
    @GetMapping("/trendz/settings")
 | 
			
		||||
    @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')")
 | 
			
		||||
    public TrendzSettings getTrendzSettings(@AuthenticationPrincipal SecurityUser user) throws ThingsboardException {
 | 
			
		||||
        accessControlService.checkPermission(user, Resource.TRENDZ_SETTINGS, Operation.READ);
 | 
			
		||||
        TenantId tenantId = user.isSystemAdmin() ? TenantId.SYS_TENANT_ID : user.getTenantId();
 | 
			
		||||
    @PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')")
 | 
			
		||||
    public TrendzSettings getTrendzSettings(@AuthenticationPrincipal SecurityUser user) {
 | 
			
		||||
        TenantId tenantId = user.getTenantId();
 | 
			
		||||
        return trendzSettingsService.findTrendzSettings(tenantId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -48,7 +48,6 @@ public class CustomerUserPermissions extends AbstractPermissions {
 | 
			
		||||
        put(Resource.ASSET_PROFILE, profilePermissionChecker);
 | 
			
		||||
        put(Resource.TB_RESOURCE, customerResourcePermissionChecker);
 | 
			
		||||
        put(Resource.MOBILE_APP_SETTINGS, new PermissionChecker.GenericPermissionChecker(Operation.READ));
 | 
			
		||||
        put(Resource.TRENDZ_SETTINGS, new PermissionChecker.GenericPermissionChecker(Operation.READ));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static final PermissionChecker customerAlarmPermissionChecker = new PermissionChecker() {
 | 
			
		||||
 | 
			
		||||
@ -51,8 +51,7 @@ public enum Resource {
 | 
			
		||||
    NOTIFICATION(EntityType.NOTIFICATION_TARGET, EntityType.NOTIFICATION_TEMPLATE,
 | 
			
		||||
            EntityType.NOTIFICATION_REQUEST, EntityType.NOTIFICATION_RULE),
 | 
			
		||||
    MOBILE_APP_SETTINGS,
 | 
			
		||||
    CALCULATED_FIELD(EntityType.CALCULATED_FIELD),
 | 
			
		||||
    TRENDZ_SETTINGS;
 | 
			
		||||
    CALCULATED_FIELD(EntityType.CALCULATED_FIELD);
 | 
			
		||||
 | 
			
		||||
    private final Set<EntityType> entityTypes;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -45,7 +45,6 @@ public class SysAdminPermissions extends AbstractPermissions {
 | 
			
		||||
        put(Resource.QUEUE, systemEntityPermissionChecker);
 | 
			
		||||
        put(Resource.NOTIFICATION, systemEntityPermissionChecker);
 | 
			
		||||
        put(Resource.MOBILE_APP_SETTINGS, PermissionChecker.allowAllPermissionChecker);
 | 
			
		||||
        put(Resource.TRENDZ_SETTINGS, PermissionChecker.allowAllPermissionChecker);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static final PermissionChecker systemEntityPermissionChecker = new PermissionChecker() {
 | 
			
		||||
 | 
			
		||||
@ -56,7 +56,6 @@ public class TenantAdminPermissions extends AbstractPermissions {
 | 
			
		||||
        put(Resource.MOBILE_APP, tenantEntityPermissionChecker);
 | 
			
		||||
        put(Resource.MOBILE_APP_BUNDLE, tenantEntityPermissionChecker);
 | 
			
		||||
        put(Resource.CALCULATED_FIELD, tenantEntityPermissionChecker);
 | 
			
		||||
        put(Resource.TRENDZ_SETTINGS, PermissionChecker.allowAllPermissionChecker);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static final PermissionChecker tenantEntityPermissionChecker = new PermissionChecker() {
 | 
			
		||||
 | 
			
		||||
@ -15,6 +15,7 @@
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.controller;
 | 
			
		||||
 | 
			
		||||
import org.junit.Before;
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
import org.thingsboard.server.common.data.trendz.TrendzSettings;
 | 
			
		||||
import org.thingsboard.server.dao.service.DaoSqlTest;
 | 
			
		||||
@ -27,6 +28,17 @@ public class TrendzControllerTest extends AbstractControllerTest {
 | 
			
		||||
 | 
			
		||||
    private final String trendzUrl = "https://some.domain.com:18888/also_necessary_prefix";
 | 
			
		||||
 | 
			
		||||
    @Before
 | 
			
		||||
    public void setUp() throws Exception {
 | 
			
		||||
        loginTenantAdmin();
 | 
			
		||||
 | 
			
		||||
        TrendzSettings trendzSettings = new TrendzSettings();
 | 
			
		||||
        trendzSettings.setEnabled(true);
 | 
			
		||||
        trendzSettings.setBaseUrl(trendzUrl);
 | 
			
		||||
 | 
			
		||||
        doPost("/api/trendz/settings", trendzSettings).andExpect(status().isOk());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testTrendzSettingsWhenTenant() throws Exception {
 | 
			
		||||
        loginTenantAdmin();
 | 
			
		||||
@ -34,11 +46,11 @@ public class TrendzControllerTest extends AbstractControllerTest {
 | 
			
		||||
        TrendzSettings trendzSettings = doGet("/api/trendz/settings", TrendzSettings.class);
 | 
			
		||||
 | 
			
		||||
        assertThat(trendzSettings).isNotNull();
 | 
			
		||||
        assertThat(trendzSettings.isEnabled()).isFalse();
 | 
			
		||||
        assertThat(trendzSettings.getTrendzUrl()).isNull();
 | 
			
		||||
        assertThat(trendzSettings.isEnabled()).isTrue();
 | 
			
		||||
        assertThat(trendzSettings.getBaseUrl()).isEqualTo(trendzUrl);
 | 
			
		||||
 | 
			
		||||
        trendzSettings.setEnabled(true);
 | 
			
		||||
        trendzSettings.setTrendzUrl(trendzUrl);
 | 
			
		||||
        String updatedUrl = "https://some.domain.com:18888/tenant_trendz";
 | 
			
		||||
        trendzSettings.setBaseUrl(updatedUrl);
 | 
			
		||||
 | 
			
		||||
        doPost("/api/trendz/settings", trendzSettings).andExpect(status().isOk());
 | 
			
		||||
 | 
			
		||||
@ -50,14 +62,16 @@ public class TrendzControllerTest extends AbstractControllerTest {
 | 
			
		||||
    public void testTrendzSettingsWhenCustomer() throws Exception {
 | 
			
		||||
        loginCustomerUser();
 | 
			
		||||
 | 
			
		||||
        TrendzSettings trendzSettings = new TrendzSettings();
 | 
			
		||||
        trendzSettings.setEnabled(true);
 | 
			
		||||
        trendzSettings.setTrendzUrl("https://some.domain.com:18888/customer_trendz");
 | 
			
		||||
        TrendzSettings newTrendzSettings = new TrendzSettings();
 | 
			
		||||
        newTrendzSettings.setEnabled(true);
 | 
			
		||||
        newTrendzSettings.setBaseUrl("https://some.domain.com:18888/customer_trendz");
 | 
			
		||||
 | 
			
		||||
        doPost("/api/trendz/settings", trendzSettings).andExpect(status().isForbidden());
 | 
			
		||||
        doPost("/api/trendz/settings", newTrendzSettings).andExpect(status().isForbidden());
 | 
			
		||||
 | 
			
		||||
        TrendzSettings fetchedTrendzSettings = doGet("/api/trendz/settings", TrendzSettings.class);
 | 
			
		||||
        assertThat(fetchedTrendzSettings).isNotNull();
 | 
			
		||||
        assertThat(fetchedTrendzSettings.isEnabled()).isTrue();
 | 
			
		||||
        assertThat(fetchedTrendzSettings.getBaseUrl()).isEqualTo(trendzUrl);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -21,6 +21,6 @@ import lombok.Data;
 | 
			
		||||
public class TrendzSettings {
 | 
			
		||||
 | 
			
		||||
    private boolean enabled;
 | 
			
		||||
    private String trendzUrl;
 | 
			
		||||
    private String baseUrl;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -166,10 +166,10 @@ public class TenantServiceImpl extends AbstractCachedEntityService<TenantId, Ten
 | 
			
		||||
        Validator.validateId(tenantId, id -> INCORRECT_TENANT_ID + id);
 | 
			
		||||
 | 
			
		||||
        userService.deleteAllByTenantId(tenantId);
 | 
			
		||||
        adminSettingsService.deleteAdminSettingsByTenantId(tenantId);
 | 
			
		||||
        qrCodeSettingService.deleteByTenantId(tenantId);
 | 
			
		||||
        notificationSettingsService.deleteNotificationSettings(tenantId);
 | 
			
		||||
        trendzSettingsService.deleteTrendzSettings(tenantId);
 | 
			
		||||
        adminSettingsService.deleteAdminSettingsByTenantId(tenantId);
 | 
			
		||||
        qrCodeSettingService.deleteByTenantId(tenantId);
 | 
			
		||||
 | 
			
		||||
        tenantDao.removeById(tenantId, tenantId.getId());
 | 
			
		||||
        publishEvictEvent(new TenantEvictEvent(tenantId, true));
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user