diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/GroupController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/GroupController.java index 19e01e7a724046e60528450012c6ac4831acb921..a33ab537ddf929fb423fc6ab82aed0e7af3babf0 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/GroupController.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/GroupController.java @@ -293,29 +293,35 @@ public class GroupController { */ @PutMapping("/groupAuthority") public ResponseEntity<?> changeAuthority(@RequestBody ChangeAuthorityRequest authorityRequest, - Authentication auth){ + Authentication auth) { Optional<User> groupAdminOpt = userService.getUserFromUsername(auth.getName()); - if(groupAdminOpt.isPresent()) { + if (groupAdminOpt.isPresent()) { User groupAdmin = groupAdminOpt.get(); - if(!(groupService.isUserAssociatedWithGroup(groupAdmin.getUsername(), authorityRequest.groupId()) - && (groupService.getUserGroupAssoAuthority(groupAdmin.getUsername(), authorityRequest.groupId()).equals("ADMIN")))) + if (!(groupService.isUserAssociatedWithGroup(groupAdmin.getUsername(), authorityRequest.groupId()) + && (groupService.getUserGroupAssoAuthority(groupAdmin.getUsername(), authorityRequest.groupId()).equals("ADMIN")))) return ResponseEntity.status(HttpStatus.FORBIDDEN).body("You are not authorized to change the authority of this user."); } - return groupService.getGroupById(authorityRequest.groupId()).flatMap(group -> userService.getUserFromUsername(authorityRequest.username()) - .flatMap(user -> { - UserGroupAsso userGroupAsso = user.getGroup().stream() - .filter(asso -> asso.getGroup().getGroupId() == authorityRequest.groupId()) - .findFirst() - .orElse(null); - if(userGroupAsso != null){ - userGroupAsso.setGroupAuthority(authorityRequest.authority()); - userService.updateUser(user); - return Optional.of(userGroupAsso); - } - return Optional.empty(); - })) - .map(ResponseEntity::ok) - .orElseGet(() -> ResponseEntity.notFound().build()); + + Optional<Group> groupOpt = groupService.getGroupById(authorityRequest.groupId()); + Optional<User> userOpt = userService.getUserFromUsername(authorityRequest.username()); + + if (groupOpt.isEmpty() || userOpt.isEmpty()) { + return ResponseEntity.notFound().build(); + } + + User user = userOpt.get(); + UserGroupAsso userGroupAsso = user.getGroup().stream() + .filter(asso -> asso.getGroup().getGroupId() == authorityRequest.groupId()) + .findFirst() + .orElse(null); + + if (userGroupAsso != null) { + userGroupAsso.setGroupAuthority(authorityRequest.authority()); + userService.updateUser(user); + return ResponseEntity.ok("Authority changed successfully."); + } else { + return ResponseEntity.notFound().build(); + } } }