mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-21 05:32:43 +00:00
[AB-245] roles are required to be sorted when syncing users, this led to incorrect role assignments
This commit is contained in:
@@ -399,6 +399,7 @@ public class AUserExperienceServiceBean implements AUserExperienceService {
|
|||||||
List<AUserExperience> aUserExperiences = userExperienceManagementService.loadAllUsers(server);
|
List<AUserExperience> aUserExperiences = userExperienceManagementService.loadAllUsers(server);
|
||||||
log.info("Found {} users to synchronize", aUserExperiences.size());
|
log.info("Found {} users to synchronize", aUserExperiences.size());
|
||||||
List<AExperienceRole> roles = experienceRoleManagementService.getExperienceRolesForServer(server);
|
List<AExperienceRole> roles = experienceRoleManagementService.getExperienceRolesForServer(server);
|
||||||
|
roles.sort(Comparator.comparing(role -> role.getLevel().getLevel()));
|
||||||
for (int i = 0; i < aUserExperiences.size(); i++) {
|
for (int i = 0; i < aUserExperiences.size(); i++) {
|
||||||
AUserExperience userExperience = aUserExperiences.get(i);
|
AUserExperience userExperience = aUserExperiences.get(i);
|
||||||
log.debug("Synchronizing {} out of {}", i, aUserExperiences.size());
|
log.debug("Synchronizing {} out of {}", i, aUserExperiences.size());
|
||||||
@@ -413,6 +414,7 @@ public class AUserExperienceServiceBean implements AUserExperienceService {
|
|||||||
List<AUserExperience> aUserExperiences = userExperienceManagementService.loadAllUsers(server);
|
List<AUserExperience> aUserExperiences = userExperienceManagementService.loadAllUsers(server);
|
||||||
log.info("Found {} users to synchronize", aUserExperiences.size());
|
log.info("Found {} users to synchronize", aUserExperiences.size());
|
||||||
List<AExperienceRole> roles = experienceRoleManagementService.getExperienceRolesForServer(server);
|
List<AExperienceRole> roles = experienceRoleManagementService.getExperienceRolesForServer(server);
|
||||||
|
roles.sort(Comparator.comparing(role -> role.getLevel().getLevel()));
|
||||||
CompletableFutureList<RoleCalculationResult> calculations = executeActionOnUserExperiencesWithFeedBack(aUserExperiences, channel, (AUserExperience experience) -> updateUserRole(experience, roles, experience.getLevelOrDefault()));
|
CompletableFutureList<RoleCalculationResult> calculations = executeActionOnUserExperiencesWithFeedBack(aUserExperiences, channel, (AUserExperience experience) -> updateUserRole(experience, roles, experience.getLevelOrDefault()));
|
||||||
return calculations.getMainFuture().thenAccept(aVoid ->
|
return calculations.getMainFuture().thenAccept(aVoid ->
|
||||||
self.syncRolesInStorage(calculations.getObjects())
|
self.syncRolesInStorage(calculations.getObjects())
|
||||||
@@ -502,6 +504,7 @@ public class AUserExperienceServiceBean implements AUserExperienceService {
|
|||||||
AUserInAServer user = userExperience.getUser();
|
AUserInAServer user = userExperience.getUser();
|
||||||
log.info("Synchronizing for user {} in server {}", user.getUserReference().getId(), user.getServerReference().getId());
|
log.info("Synchronizing for user {} in server {}", user.getUserReference().getId(), user.getServerReference().getId());
|
||||||
List<AExperienceRole> roles = experienceRoleManagementService.getExperienceRolesForServer(user.getServerReference());
|
List<AExperienceRole> roles = experienceRoleManagementService.getExperienceRolesForServer(user.getServerReference());
|
||||||
|
roles.sort(Comparator.comparing(role -> role.getLevel().getLevel()));
|
||||||
return updateUserRole(userExperience, roles, userExperience.getLevelOrDefault());
|
return updateUserRole(userExperience, roles, userExperience.getLevelOrDefault());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ public class ExperienceRoleServiceBean implements ExperienceRoleService {
|
|||||||
log.info("Recalculating the roles for {} users, because their current role was removed from experience tracking.", roleInServer.getUsers().size());
|
log.info("Recalculating the roles for {} users, because their current role was removed from experience tracking.", roleInServer.getUsers().size());
|
||||||
List<AExperienceRole> roles = experienceRoleManagementService.getExperienceRolesForServer(role.getServer());
|
List<AExperienceRole> roles = experienceRoleManagementService.getExperienceRolesForServer(role.getServer());
|
||||||
roles.removeIf(role1 -> role1.getId().equals(roleInServer.getId()));
|
roles.removeIf(role1 -> role1.getId().equals(roleInServer.getId()));
|
||||||
|
roles.sort(Comparator.comparing(innerRole -> innerRole.getLevel().getLevel()));
|
||||||
Long roleId = role.getId();
|
Long roleId = role.getId();
|
||||||
CompletableFutureList<RoleCalculationResult> calculationResults = userExperienceService.executeActionOnUserExperiencesWithFeedBack(roleInServer.getUsers(), channel,
|
CompletableFutureList<RoleCalculationResult> calculationResults = userExperienceService.executeActionOnUserExperiencesWithFeedBack(roleInServer.getUsers(), channel,
|
||||||
(AUserExperience ex) -> userExperienceService.updateUserRole(ex, roles, ex.getLevelOrDefault()));
|
(AUserExperience ex) -> userExperienceService.updateUserRole(ex, roles, ex.getLevelOrDefault()));
|
||||||
|
|||||||
Reference in New Issue
Block a user