Skip to content

Commit 6ee6c01

Browse files
committed
Only one super admin should exists
1 parent e759c87 commit 6ee6c01

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/user/service/UserServiceImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,11 @@ public Mono<User> createNewUserByAuthUser(AuthUser authUser, boolean isSuperAdmi
183183
newUser.setConnections(connections);
184184
newUser.setActiveAuthId(connection.getAuthId());
185185
newUser.setIsNewUser(true);
186+
if(isSuperAdmin) {
187+
return repository.findBySuperAdminIsTrue()
188+
.flatMap(user -> update(user.getId(), newUser))
189+
.switchIfEmpty(create(newUser));
190+
}
186191
return create(newUser);
187192
}
188193

server/api-service/lowcoder-server/src/main/java/org/lowcoder/runner/migrations/DatabaseChangelog.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,24 @@ public void renameApplicationRecordCollection(MongockTemplate mongoTemplate, Mon
479479

480480
}
481481

482+
@ChangeSet(order = "031", id = "delete-old-super-admin", author = "Thomas")
483+
public void deleteOldSuperAdmin(MongockTemplate mongoTemplate, MongoDatabase mongoDatabase) {
484+
List<User> users = mongoTemplate.find(
485+
Query.query(Criteria.where("superAdmin").is(true))
486+
.with(Sort.by(Sort.Direction.DESC, "createdAt")),
487+
User.class
488+
);
489+
490+
// Ensure there's more than one superAdmin user
491+
if (users.size() > 1) {
492+
// Keep the most recent one (first in the sorted list), delete the rest
493+
List<User> usersToDelete = users.subList(1, users.size());
494+
for (User user : usersToDelete) {
495+
mongoTemplate.remove(user);
496+
}
497+
}
498+
}
499+
482500
private void addGidField(MongockTemplate mongoTemplate, String collectionName) {
483501
// Create a query to match all documents
484502
Query query = new Query();

0 commit comments

Comments
 (0)