public Mono<UserDto> verifyUser(ID userId, Mono<MultiValueMap<String, String>> formData) { log.debug("Verifying user ..."); return Mono.zip(findUserById(userId), formData) .map(this::verifyUser) .flatMap(userRepository::save) .map(AbstractMongoUser::toUserDto); }
public Mono<U> fetchUserById(ID userId) { // fetch the user return findUserById(userId) .zipWith(LecrUtils.currentUser()) .doOnNext(this::hideConfidentialFields) .map(Tuple2::getT1); }
public Mono<UserDto> changePassword(ID userId, Mono<ChangePasswordForm> changePasswordForm) { return Mono.zip(findUserById(userId), LecrUtils.currentUser()) .doOnNext(this::ensureEditable) .flatMap(tuple -> Mono.zip( Mono.just(tuple.getT1()), findUserById(toId(tuple.getT2().get().getId())), changePasswordForm) .doOnNext(this::changePassword)) .map(Tuple2::getT1) .flatMap(userRepository::save) .map(AbstractMongoUser::toUserDto); }
public Mono<Void> requestEmailChange(ID userId, Mono<EmailForm> emailForm) { return Mono.zip(findUserById(userId), LecrUtils.currentUser()) .doOnNext(this::ensureEditable) .flatMap(tuple -> Mono.zip( Mono.just(tuple.getT1()), findUserById(toId(tuple.getT2().get().getId())), emailForm) .doOnNext(this::requestEmailChange)) .map(Tuple2::getT1) .flatMap(userRepository::save) .doOnNext(this::mailChangeEmailLink) .then(); }
@PreAuthorize("isAuthenticated()") public Mono<UserDto> changeEmail(ID userId, Mono<MultiValueMap<String, String>> formData) { log.debug("Changing email of current user ..."); return LecrUtils.currentUser() .doOnNext(currentUser -> { LexUtils.validate(userId.equals(toId(currentUser.get().getId())), "com.naturalprogrammer.spring.wrong.login").go(); }) .then(Mono.zip(findUserById(userId), formData)) .map(this::validateChangeEmail) .flatMap(user -> Mono.zip(Mono.just(user), userRepository .findByEmail(user.getNewEmail()) .map(Optional::of) .defaultIfEmpty(Optional.empty()) )) .map(this::changeEmail) .flatMap(userRepository::save) .map(AbstractMongoUser::toUserDto); }
/** * Resends verification mail to the user. */ public Mono<Void> resendVerificationMail(ID userId) { return findUserById(userId) .zipWith(LecrUtils.currentUser()) .doOnNext(this::ensureEditable) .map(Tuple2::getT1) .doOnNext(this::resendVerificationMail).then(); }
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; }); }