Skip to content

Commit 126f7db

Browse files
authored
Release (#238)
* Refactor controller mappings and annotations for clarity (#236) * Refactor role retrieval to return Set instead of Optional (#237) Replaced Optional with direct Set return for dbgap role retrieval in `RoleService` to simplify logic and usage. Updated corresponding methods, validations, and test cases to align with the new return type. This also ensures users who have no permissions have their permissions updated.
1 parent 00fa4ab commit 126f7db

File tree

5 files changed

+18
-21
lines changed

5 files changed

+18
-21
lines changed

pic-sure-auth-services/src/main/java/edu/harvard/hms/dbmi/avillach/auth/rest/ConnectionWebController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public ResponseEntity<?> getConnectionById(
4949
}
5050

5151
@Operation(description = "GET a list of existing Connection, requires SUPER_ADMIN or ADMIN role")
52-
@GetMapping(value = "/", produces = "application/json")
52+
@GetMapping
5353
@Secured({SUPER_ADMIN, ADMIN})
5454
public ResponseEntity<List<Connection>> getAllConnections() {
5555
List<Connection> allConnections = connectionWebService.getAllConnections();

pic-sure-auth-services/src/main/java/edu/harvard/hms/dbmi/avillach/auth/rest/RoleController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
*/
2626
@Tag(name = "Role Management")
2727
@Controller
28-
@RequestMapping(value = "/role")
28+
@RequestMapping("/role")
2929
public class RoleController {
3030

3131
private final RoleService roleService;
@@ -49,8 +49,8 @@ public ResponseEntity<?> getRoleById(
4949
}
5050

5151
@Operation(description = "GET a list of existing Roles, requires ADMIN or SUPER_ADMIN role")
52-
@GetMapping(produces = "application/json")
5352
@RolesAllowed({ADMIN, SUPER_ADMIN})
53+
@GetMapping
5454
public ResponseEntity<List<Role>> getRoleAll() {
5555
List<Role> allRoles = this.roleService.getAllRoles();
5656
return PICSUREResponse.success(allRoles);

pic-sure-auth-services/src/main/java/edu/harvard/hms/dbmi/avillach/auth/service/impl/RoleService.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -285,21 +285,21 @@ public boolean upsertRole(User u, String roleName, String roleDescription) {
285285
return status;
286286
}
287287

288-
public Optional<Set<String>> getRoleNamesForDbgapPermissions(Set<RasDbgapPermission> dbgapPermissions) {
288+
public Set<String> getRoleNamesForDbgapPermissions(Set<RasDbgapPermission> dbgapPermissions) {
289+
Set<String> roles = new HashSet<>();
289290
if (dbgapPermissions == null || dbgapPermissions.isEmpty()) {
290291
logger.info("getRoleNamesForDbgapPermissions() dbgapPermissions is empty");
291-
return Optional.empty();
292+
return roles;
292293
}
293294

294-
Set<String> roles = new HashSet<>();
295295
dbgapPermissions.forEach(dbgapPermission -> {
296296
String roleName = StringUtils.isNotBlank(dbgapPermission.getConsentGroup()) ?
297297
"MANAGED_" + dbgapPermission.getPhsId() + "_" + dbgapPermission.getConsentGroup() :
298298
"MANAGED_" + dbgapPermission.getPhsId();
299299
roles.add(roleName);
300300
});
301301

302-
return Optional.of(roles);
302+
return roles;
303303
}
304304

305305
public Set<Role> findByNameIn(Set<String> roleNames) {

pic-sure-auth-services/src/main/java/edu/harvard/hms/dbmi/avillach/auth/service/impl/authentication/RASAuthenticationService.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -118,22 +118,20 @@ public HashMap<String, String> authenticate(Map<String, String> authRequest, Str
118118

119119
if (!rasPassport.get().getIss().equals(this.rasPassportIssuer)) {
120120
logger.error("validateRASPassport() LOGIN FAILED ___ PASSPORT ISSUER IS NOT CORRECT ___ USER: {} ___ " +
121-
"EXPECTED ISSUER {} ___ ACTUAL ISSUER {} ___ CODE {}",
121+
"EXPECTED ISSUER {} ___ ACTUAL ISSUER {} ___ CODE {}",
122122
user.getSubject(), this.rasPassportIssuer, rasPassport.get().getIss(), authRequest.get("code"));
123123
return null;
124124
}
125125

126126
logger.info("RAS PASSPORT FOUND ___ USER: {} ___ PASSPORT: {} ___ CODE {}", user.getSubject(), rasPassport.get(), authRequest.get("code"));
127127

128128
Set<RasDbgapPermission> dbgapPermissions = this.rasPassPortService.ga4gpPassportToRasDbgapPermissions(rasPassport.get().getGa4ghPassportV1());
129-
Optional<Set<String>> dbgapRoleNames = this.roleService.getRoleNamesForDbgapPermissions(dbgapPermissions);
130-
if (dbgapRoleNames.isPresent()) {
131-
user = userService.updateUserRoles(user, dbgapRoleNames.get());
132-
logger.debug("USER {} ROLES UPDATED {} ___ CODE {}",
133-
user.getSubject(),
134-
user.getRoles().stream().map(role -> role.getName().replace("MANAGED_", "")).toArray(),
135-
authRequest.get("code"));
136-
}
129+
Set<String> dbgapRoleNames = this.roleService.getRoleNamesForDbgapPermissions(dbgapPermissions);
130+
user = userService.updateUserRoles(user, dbgapRoleNames);
131+
logger.debug("USER {} ROLES UPDATED {} ___ CODE {}",
132+
user.getSubject(),
133+
user.getRoles().stream().map(role -> role.getName().replace("MANAGED_", "")).toArray(),
134+
authRequest.get("code"));
137135

138136
String passport = introspectResponse.get("passport_jwt_v11").toString();
139137
user.setPassport(passport);
@@ -183,7 +181,7 @@ private HashMap<String, String> createUserClaims(User user, String idToken) {
183181
* Generate the user metadata that will be stored in the database. This metadata is used to determine the user's
184182
* role and other information.
185183
*
186-
* @param user The user
184+
* @param user The user
187185
* @return The user metadata as an ObjectNode
188186
*/
189187
protected ObjectNode generateRasUserMetadata(User user) {

pic-sure-auth-services/src/test/java/edu/harvard/hms/dbmi/avillach/auth/service/impl/RoleServiceTest.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -290,16 +290,15 @@ private Role createTopAdminRoleWithoutPrivs() {
290290

291291
@Test
292292
public void getRoleNamesForDbgapPermissions_PermissionsAreNull() {
293-
Optional<Set<String>> rolesForDbgapPermissions = roleService.getRoleNamesForDbgapPermissions(null);
293+
Set<String> rolesForDbgapPermissions = roleService.getRoleNamesForDbgapPermissions(null);
294294
assertNotNull(rolesForDbgapPermissions);
295295
assertTrue(rolesForDbgapPermissions.isEmpty());
296296
}
297297

298298
@Test
299299
public void getRoleNamesForDbgapPermissions_PermissionsEmpty() {
300300
Set<RasDbgapPermission> rasDbgapPermissions = new HashSet<>();
301-
302-
Optional<Set<String>> rolesForDbgapPermissions = roleService.getRoleNamesForDbgapPermissions(rasDbgapPermissions);
301+
Set<String> rolesForDbgapPermissions = roleService.getRoleNamesForDbgapPermissions(rasDbgapPermissions);
303302
assertNotNull(rolesForDbgapPermissions);
304303
assertTrue(rolesForDbgapPermissions.isEmpty());
305304
}
@@ -330,7 +329,7 @@ public void getRoleNamesForDbgapPermissions() {
330329
rasDbgapPermissions.add(rasDbgapPermissionV1);
331330
rasDbgapPermissions.add(rasDbgapPermissionV2);
332331

333-
Optional<Set<String>> rolesForDbgapPermissions = roleService.getRoleNamesForDbgapPermissions(rasDbgapPermissions);
332+
Set<String> rolesForDbgapPermissions = roleService.getRoleNamesForDbgapPermissions(rasDbgapPermissions);
334333
assertNotNull(rolesForDbgapPermissions);
335334
System.out.println(rolesForDbgapPermissions);
336335
}

0 commit comments

Comments
 (0)