diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/acl/ce/PolicyGeneratorCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/acl/ce/PolicyGeneratorCE.java index 9a7effb48bf2..2ff250583026 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/acl/ce/PolicyGeneratorCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/acl/ce/PolicyGeneratorCE.java @@ -317,6 +317,9 @@ public Set getAllChildPolicies( Set policySet, Class sourceEntity, Class destinationEntity) { + if (policySet == null) { + return new HashSet<>(); + } Set policies = policySet.stream() .map(policy -> { AclPermission aclPermission = diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCEImpl.java index 7b062f630587..f87bc9af4ea1 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCEImpl.java @@ -533,7 +533,9 @@ protected Mono createJsAction(ActionCollection actionCollection, Acti newAction.setUnpublishedAction(action); Set actionCollectionPolicies = new HashSet<>(); - actionCollection.getPolicies().forEach(policy -> { + Set existingPolicies = + actionCollection.getPolicies() == null ? Set.of() : actionCollection.getPolicies(); + existingPolicies.forEach(policy -> { Policy actionPolicy = Policy.builder() .permission(policy.getPermission()) .permissionGroups(policy.getPermissionGroups()) diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/helpers/UserPermissionUtils.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/helpers/UserPermissionUtils.java index a082e6acf48b..4f14435df62c 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/helpers/UserPermissionUtils.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/helpers/UserPermissionUtils.java @@ -15,7 +15,8 @@ public class UserPermissionUtils { public static boolean validateDomainObjectPermissionExists( BaseDomain baseDomain, AclPermission aclPermission, Set permissionGroups) { - Optional permissionPolicy = baseDomain.getPolicies().stream() + Set basePolicies = baseDomain.getPolicies() == null ? Set.of() : baseDomain.getPolicies(); + Optional permissionPolicy = basePolicies.stream() .filter(policy -> policy.getPermission().equals(aclPermission.getValue())) .findFirst(); return permissionPolicy.isPresent() diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/db/ce/Migration025RemoveUnassignPermissionFromUnnecessaryRoles.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/db/ce/Migration025RemoveUnassignPermissionFromUnnecessaryRoles.java index d0f579426e77..b87594614020 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/db/ce/Migration025RemoveUnassignPermissionFromUnnecessaryRoles.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/db/ce/Migration025RemoveUnassignPermissionFromUnnecessaryRoles.java @@ -14,6 +14,7 @@ import org.springframework.data.mongodb.core.query.Update; import java.util.Optional; +import java.util.Set; import static com.appsmith.server.migrations.constants.DeprecatedFieldName.POLICIES; import static com.appsmith.server.migrations.constants.FieldName.POLICY_MAP; @@ -49,7 +50,9 @@ public void executeMigration() { mongoTemplate.stream(optimizedQueryForInterestingPermissionGroups, PermissionGroup.class) .forEach(permissionGroup -> { - Optional optionalUnassignPolicy = permissionGroup.getPolicies().stream() + Set policies = + permissionGroup.getPolicies() == null ? Set.of() : permissionGroup.getPolicies(); + Optional optionalUnassignPolicy = policies.stream() .filter(policy -> policy.getPermission().equals("unassign:permissionGroups")) .findFirst(); diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/db/ce/Migration028TagUserManagementRolesWithoutDefaultDomainTypeAndId.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/db/ce/Migration028TagUserManagementRolesWithoutDefaultDomainTypeAndId.java index bfe4dcbacb2d..c2004407a5db 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/db/ce/Migration028TagUserManagementRolesWithoutDefaultDomainTypeAndId.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/db/ce/Migration028TagUserManagementRolesWithoutDefaultDomainTypeAndId.java @@ -51,7 +51,8 @@ public void tagUserManagementRolesWithoutDefaultDomainTypeAndId() { */ Set userManagementRoleIds = new HashSet<>(); existingUsers.forEach(existingUser -> { - Optional resetPasswordPolicyOptional = existingUser.getPolicies().stream() + Set policies = existingUser.getPolicies() == null ? Set.of() : existingUser.getPolicies(); + Optional resetPasswordPolicyOptional = policies.stream() .filter(policy1 -> RESET_PASSWORD_USERS.getValue().equals(policy1.getPermission())) .findFirst(); resetPasswordPolicyOptional.ifPresent(resetPasswordPolicy -> { diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/db/ce/Migration029PopulateDefaultDomainIdInUserManagementRoles.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/db/ce/Migration029PopulateDefaultDomainIdInUserManagementRoles.java index 0d930522f8ad..882e1a1ad1b0 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/db/ce/Migration029PopulateDefaultDomainIdInUserManagementRoles.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/db/ce/Migration029PopulateDefaultDomainIdInUserManagementRoles.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; import static com.appsmith.server.acl.AclPermission.RESET_PASSWORD_USERS; import static com.appsmith.server.migrations.constants.DeprecatedFieldName.POLICIES; @@ -51,7 +52,8 @@ public void populateDefaultDomainIdInUserManagementRoles() { Map userManagementRoleIdToUserIdMap = new HashMap<>(); mongoTemplate.stream(queryExistingUsersWithResetPasswordPolicy, User.class) .forEach(existingUser -> { - Optional resetPasswordPolicyOptional = existingUser.getPolicies().stream() + Set policies = existingUser.getPolicies() == null ? Set.of() : existingUser.getPolicies(); + Optional resetPasswordPolicyOptional = policies.stream() .filter(policy1 -> RESET_PASSWORD_USERS.getValue().equals(policy1.getPermission())) .findFirst(); resetPasswordPolicyOptional.ifPresent(resetPasswordPolicy -> { diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/PermissionGroupServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/PermissionGroupServiceCEImpl.java index 34976f8fa692..22e516476ef5 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/PermissionGroupServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/PermissionGroupServiceCEImpl.java @@ -309,7 +309,8 @@ public Mono getPublicPermissionGroupId() { @Override public boolean isEntityAccessible(BaseDomain object, String permission, String permissionGroupId) { - return object.getPolicies().stream() + Set policies = object.getPolicies() == null ? Set.of() : object.getPolicies(); + return policies.stream() .filter(policy -> policy.getPermission().equals(permission) && policy.getPermissionGroups().contains(permissionGroupId)) .findFirst()