From 2d83479c9570e477082595459b95fa6271356ee2 Mon Sep 17 00:00:00 2001 From: Bennett Date: Wed, 2 Sep 2026 16:11:42 +0300 Subject: [PATCH 1/2] release: Fix errors in privileges --- .../flextuma/core/services/BaseService.java | 4 ++-- .../modules/sms/services/SmsConnectorService.java | 12 +++++------- .../flextuma/core/services/BaseServiceTest.java | 14 +++++++++++++- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/flexcodelabs/flextuma/core/services/BaseService.java b/src/main/java/com/flexcodelabs/flextuma/core/services/BaseService.java index 8393ae5..aa5e5da 100644 --- a/src/main/java/com/flexcodelabs/flextuma/core/services/BaseService.java +++ b/src/main/java/com/flexcodelabs/flextuma/core/services/BaseService.java @@ -98,7 +98,7 @@ protected void checkPermission(String requiredPermission) { boolean isAuthorized = authorities.contains("SUPER_ADMIN") || authorities.contains(requiredPermission) || - (!isAdminEntity() && authorities.contains("ALL")); + (!isAdminEntity() && (authorities.contains("ALL") || requiredPermission.equals("ALL"))); if (!isAuthorized) { throw new AccessDeniedException("You have no permission to access " + getEntityPlural()); @@ -469,7 +469,7 @@ protected void prepareEntityForPersistence(Object entity) { } } - private T findAccessibleById(UUID id) { + protected T findAccessibleById(UUID id) { Specification spec = buildTenantSpec() .and((root, query, cb) -> cb.equal(root.get("id"), id)); return getRepositoryAsExecutor().findOne(spec) diff --git a/src/main/java/com/flexcodelabs/flextuma/modules/sms/services/SmsConnectorService.java b/src/main/java/com/flexcodelabs/flextuma/modules/sms/services/SmsConnectorService.java index 1c60aee..4585f72 100644 --- a/src/main/java/com/flexcodelabs/flextuma/modules/sms/services/SmsConnectorService.java +++ b/src/main/java/com/flexcodelabs/flextuma/modules/sms/services/SmsConnectorService.java @@ -25,22 +25,22 @@ protected JpaRepository getRepository() { @Override protected String getReadPermission() { - return SmsConnector.READ; + return "ALL"; } @Override protected String getAddPermission() { - return SmsConnector.ADD; + return "ALL"; } @Override protected String getUpdatePermission() { - return SmsConnector.UPDATE; + return "ALL"; } @Override protected String getDeletePermission() { - return SmsConnector.DELETE; + return "ALL"; } @Override @@ -112,9 +112,7 @@ protected void validateDelete(SmsConnector entity) { @Override public SmsConnector update(UUID id, SmsConnector entity) { checkPermission(getUpdatePermission()); - SmsConnector existing = getRepository().findById(id) - .orElseThrow(() -> new org.springframework.web.server.ResponseStatusException( - org.springframework.http.HttpStatus.NOT_FOUND, getEntitySingular() + " not found")); + SmsConnector existing = findAccessibleById(id); if (!Boolean.TRUE.equals(isAdminPermission()) && (existing.getProvider() + "_SYSTEM").equalsIgnoreCase(existing.getProvider())) { diff --git a/src/test/java/com/flexcodelabs/flextuma/core/services/BaseServiceTest.java b/src/test/java/com/flexcodelabs/flextuma/core/services/BaseServiceTest.java index 195485c..5e62540 100644 --- a/src/test/java/com/flexcodelabs/flextuma/core/services/BaseServiceTest.java +++ b/src/test/java/com/flexcodelabs/flextuma/core/services/BaseServiceTest.java @@ -85,6 +85,8 @@ public void setName(String name) { } class TestService extends BaseService { + private String readPermission = "READ"; + @Override protected JpaRepository getRepository() { return repository; @@ -92,7 +94,7 @@ protected JpaRepository getRepository() { @Override protected String getReadPermission() { - return "READ"; + return readPermission; } @Override @@ -173,6 +175,16 @@ void checkPermission_shouldAllowAllForNonAdminEntities() { assertDoesNotThrow(() -> service.findAll()); } + @Test + void checkPermission_shouldAllowTheAllPolicyForAuthenticatedNonAdminEntities() { + service.readPermission = "ALL"; + mockPermissions(Set.of()); + when(currentUserResolver.getCurrentUser()).thenReturn(Optional.empty()); + when(executor.findAll(any(Specification.class))).thenReturn(List.of()); + + assertDoesNotThrow(() -> service.findAll()); + } + @Test @SuppressWarnings("unchecked") void getEntityFields_shouldReturnFieldDTOs() { From 4818c1c627a502f53c6063f1a848dbb9f873513f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 2 Sep 2026 13:12:25 +0000 Subject: [PATCH 2/2] Release v0.0.47 [skip ci] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 110a658..6b788f1 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ plugins { } group = 'com.flexcodelabs' -version = '0.0.46' +version = '0.0.47' description = 'Flextuma App' java {