/** * Updates a user */ @PatchMapping(value = "/users/{id}") public Mono<UserDto> updateUser( @PathVariable ID id, @RequestBody @NotBlank Mono<String> patch, ServerHttpResponse response) { log.debug("Updating user ... "); return userWithToken(lemonReactiveService.updateUser(id, patch), response); }
public Mono<UserDto> updateUser(ID userId, Mono<String> patch) { return Mono.zip(findUserById(userId), LecrUtils.currentUser(), patch) .doOnNext(this::ensureEditable) .map((Tuple3<U, Optional<UserDto>, String> tuple3) -> this.updateUser(tuple3.getT1(), tuple3.getT2(), tuple3.getT3())) .flatMap(userRepository::save) .map(user -> { UserDto userDto = user.toUserDto(); userDto.setPassword(null); return userDto; }); }