Skip to content

Commit

Permalink
fix: overwriting what projects users have been assigned every time yo…
Browse files Browse the repository at this point in the history
…u login via oauth2
  • Loading branch information
neoReuters committed Oct 1, 2024
1 parent 2348413 commit 6f36a3c
Showing 1 changed file with 32 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,7 @@
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.Map;
import java.util.Objects;
import java.util.*;
import java.util.concurrent.ExecutionException;

import static java.lang.String.format;
Expand Down Expand Up @@ -161,7 +159,37 @@ private DatashareUser processOAuthApiResponse(Response oauthApiResponse) throws
}
if (!oauthDefaultProject.isEmpty()) {
userMap.put("provider", "icij");
userMap.put("groups_by_applications", Map.of("datashare", singletonList(oauthDefaultProject)));

// Check if groups_by_applications already exists in userMap
Object groupsByApplicationsObj = userMap.get("groups_by_applications");

Map<String, Object> groupsByApplications;

if (groupsByApplicationsObj instanceof Map) {
groupsByApplications = (Map<String, Object>) groupsByApplicationsObj;
} else {
// Initialize a new map if groups_by_applications is missing or is of a wrong type
groupsByApplications = new HashMap<>();
userMap.put("groups_by_applications", groupsByApplications);
}

// Check if datashare exists in groups_by_applications
Object datashareObj = groupsByApplications.get("datashare");

List<String> datashare;

if (datashareObj instanceof List) {
datashare = (List<String>) datashareObj;
} else {
// If datashare does not exist or is not a list, create a new one
datashare = new ArrayList<>();
groupsByApplications.put("datashare", datashare);
}

// Add the default project only if it is not already in the list
if (!datashare.contains(oauthDefaultProject)) {
datashare.add(oauthDefaultProject);
}
}
DatashareUser datashareUser = new DatashareUser(userMap);
writableUsers().saveOrUpdate(datashareUser);
Expand Down

0 comments on commit 6f36a3c

Please sign in to comment.