chore: Refactor UpdateSuperUserMigrationHelperCE for re-use in EE (#36851)

## Automation

/ok-to-test tags="@tag.Sanity"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/11321563633>
> Commit: 402dfb3ae87383f87afc5b343971e5334b79a695
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=11321563633&attempt=2"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
> Spec:
> <hr>Mon, 14 Oct 2024 06:12:25 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Enhanced user creation process with automatic generation of user
management permission groups and policies.
- Introduced a new method for creating permission groups associated with
user management.

- **Bug Fixes**
	- Streamlined the assignment of user policies during user creation.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
Trisha Anand 2024-10-14 13:52:50 +05:30 committed by GitHub
parent 299cc42aeb
commit dfd5a5a780
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -8,6 +8,7 @@ import com.appsmith.server.domains.Tenant;
import com.appsmith.server.domains.User; import com.appsmith.server.domains.User;
import com.appsmith.server.dtos.Permission; import com.appsmith.server.dtos.Permission;
import com.appsmith.server.solutions.PolicySolution; import com.appsmith.server.solutions.PolicySolution;
import org.jetbrains.annotations.NotNull;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
import java.time.Instant; import java.time.Instant;
@ -56,7 +57,17 @@ public class UpdateSuperUserMigrationHelperCE {
user.setCreatedAt(Instant.now()); user.setCreatedAt(Instant.now());
user = mongoTemplate.save(user); user = mongoTemplate.save(user);
// Assign the user to the default permissions PermissionGroup userManagementPermissionGroup = createUserManagementPermissionGroup(mongoTemplate, user);
Set<Policy> userPolicies = this.generateUserPolicy(
user, userManagementPermissionGroup, instanceAdminRole, tenant, policySolution, policyGenerator);
user.setPolicies(userPolicies);
return mongoTemplate.save(user);
}
@NotNull public static PermissionGroup createUserManagementPermissionGroup(MongoTemplate mongoTemplate, User user) {
PermissionGroup userManagementPermissionGroup = new PermissionGroup(); PermissionGroup userManagementPermissionGroup = new PermissionGroup();
userManagementPermissionGroup.setName(user.getUsername() + FieldName.SUFFIX_USER_MANAGEMENT_ROLE); userManagementPermissionGroup.setName(user.getUsername() + FieldName.SUFFIX_USER_MANAGEMENT_ROLE);
// Add CRUD permissions for user to the group // Add CRUD permissions for user to the group
@ -66,12 +77,6 @@ public class UpdateSuperUserMigrationHelperCE {
userManagementPermissionGroup.setAssignedToUserIds(Set.of(user.getId())); userManagementPermissionGroup.setAssignedToUserIds(Set.of(user.getId()));
PermissionGroup savedPermissionGroup = mongoTemplate.save(userManagementPermissionGroup); PermissionGroup savedPermissionGroup = mongoTemplate.save(userManagementPermissionGroup);
return savedPermissionGroup;
Set<Policy> userPolicies = this.generateUserPolicy(
user, savedPermissionGroup, instanceAdminRole, tenant, policySolution, policyGenerator);
user.setPolicies(userPolicies);
return mongoTemplate.save(user);
} }
} }