Сервисы – код
@Slf4j
@AllArgsConstructor
@Service
public class UserService implements ReactiveUserDetailsService {
...
@Override
public Mono findByUsername(String username) {
return userRepository.findByUsernameWithQuery(username).switchIfEmpty(
Mono.error(new UsernameNotFoundException(username))
).cast(UserDetails.class);
}
public Mono addUser(final User user) {
user.setRoleId(USER_ROLE_ID);
user.setPassword(encoder.encode(user.getPassword()));
return userRepository.findByUsernameWithQuery(user.getUsername()).flatMap((el) ->
Mono.error(new UserAlreadyExistsException(user.getUsername()))
).switchIfEmpty(
Mono.defer(() -> userRepository.save(user))
);
}