diff --git a/application/src/main/java/org/thingsboard/server/controller/ImageController.java b/application/src/main/java/org/thingsboard/server/controller/ImageController.java index f3f02f5291..16f69a2cb6 100644 --- a/application/src/main/java/org/thingsboard/server/controller/ImageController.java +++ b/application/src/main/java/org/thingsboard/server/controller/ImageController.java @@ -16,8 +16,6 @@ package org.thingsboard.server.controller; import io.swagger.annotations.ApiParam; -import lombok.Builder; -import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -142,7 +140,16 @@ public class ImageController extends BaseController { @RequestBody TbResourceInfo newImageInfo) throws ThingsboardException { TbResourceInfo imageInfo = checkImageInfo(type, key, Operation.WRITE); imageInfo.setTitle(newImageInfo.getTitle()); - imageInfo.setPublic(newImageInfo.isPublic()); + return tbImageService.save(imageInfo, getCurrentUser()); + } + + @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')") + @PutMapping(IMAGE_URL + "/public/{isPublic}") + public TbResourceInfo updateImagePublicStatus(@PathVariable String type, + @PathVariable String key, + @PathVariable boolean isPublic) throws ThingsboardException { + TbResourceInfo imageInfo = checkImageInfo(type, key, Operation.WRITE); + imageInfo.setPublic(isPublic); return tbImageService.save(imageInfo, getCurrentUser()); } @@ -154,11 +161,11 @@ public class ImageController extends BaseController { return downloadIfChanged(type, key, etag, false); } - @GetMapping(value = "/api/images/public/{publicKey}", produces = "image/*") - public ResponseEntity downloadPublicImage(@PathVariable String publicKey, + @GetMapping(value = "/api/images/public/{publicResourceKey}", produces = "image/*") + public ResponseEntity downloadPublicImage(@PathVariable String publicResourceKey, @RequestHeader(name = HttpHeaders.IF_NONE_MATCH, required = false) String etag) throws Exception { - ImageCacheKey cacheKey = ImageCacheKey.forPublicImage(publicKey); - return downloadIfChanged(cacheKey, etag, () -> imageService.getPublicImageInfoByPublicKey(publicKey)); + ImageCacheKey cacheKey = ImageCacheKey.forPublicImage(publicResourceKey); + return downloadIfChanged(cacheKey, etag, () -> imageService.getPublicImageInfoByKey(publicResourceKey)); } @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')") diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/resource/ImageService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/resource/ImageService.java index e689a48c0b..bb4f23a31e 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/resource/ImageService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/resource/ImageService.java @@ -34,7 +34,7 @@ public interface ImageService { TbResourceInfo getImageInfoByTenantIdAndKey(TenantId tenantId, String key); - TbResourceInfo getPublicImageInfoByPublicKey(String publicKey); + TbResourceInfo getPublicImageInfoByKey(String publicResourceKey); PageData getImagesByTenantId(TenantId tenantId, PageLink pageLink); diff --git a/dao/src/main/java/org/thingsboard/server/dao/resource/BaseImageService.java b/dao/src/main/java/org/thingsboard/server/dao/resource/BaseImageService.java index 096073594f..32bbd4ab6f 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/resource/BaseImageService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/resource/BaseImageService.java @@ -221,8 +221,8 @@ public class BaseImageService extends BaseResourceService implements ImageServic } @Override - public TbResourceInfo getPublicImageInfoByPublicKey(String publicKey) { - return resourceInfoDao.findPublicResourceByKey(ResourceType.IMAGE, publicKey); + public TbResourceInfo getPublicImageInfoByKey(String publicResourceKey) { + return resourceInfoDao.findPublicResourceByKey(ResourceType.IMAGE, publicResourceKey); } @Override