@PostMapping(GROUP_END_POINT)
@ApiOperation(value = "Create a new group", response = ResponseEntity.class)
@Transactional
@ApiResponses({
@ApiResponse(code = 201, message = "New group created", response = ResponseEntity.class),
@ApiResponse(code = 400, message = "Group name not available", response = ResponseEntity.class)
})
public ResponseEntity createGroup(@RequestBody GroupCommand group) {
GroupValue groupValue =
groupValueFactory.createGroup(group.getName(), group.getLabel(), DEFAULT_ROLES);
if (!groupService.isGroupNameAvailable(groupValue)) {
throw new GroupNameNotAvailableException(group.getName());
}
groupService.persist(groupValue);
groupPermissionService.grantDefaultPermissions(groupValue);
roleMembershipService.addUserToRole(getCurrentUsername(), getManagerRoleName(groupValue));
URI location =
ServletUriComponentsBuilder.fromCurrentRequest()
.path("/{name}")
.buildAndExpand(groupValue.getName())
.toUri();
return ResponseEntity.created(location).build();
}