/** POST /register -> register the user. */
  @RequestMapping(
      value = "/register",
      method = RequestMethod.POST,
      produces = MediaType.TEXT_PLAIN_VALUE)
  @Timed
  public ResponseEntity<?> registerAccount(
      @Valid @RequestBody UserDTO userDTO, HttpServletRequest request) {
    return userRepository
        .findOneByLogin(userDTO.getLogin())
        .map(user -> new ResponseEntity<>("login already in use", HttpStatus.BAD_REQUEST))
        .orElseGet(
            () ->
                userRepository
                    .findOneByEmail(userDTO.getEmail())
                    .map(
                        user ->
                            new ResponseEntity<>(
                                "e-mail address already in use", HttpStatus.BAD_REQUEST))
                    .orElseGet(
                        () -> {
                          User user =
                              userService.createUserInformation(
                                  userDTO.getLogin(),
                                  userDTO.getPassword(),
                                  userDTO.getFirstName(),
                                  userDTO.getLastName(),
                                  userDTO.getEmail().toLowerCase(),
                                  userDTO.getLangKey());
                          String baseUrl =
                              request.getScheme()
                                  + // "http"
                                  "://"
                                  + // "://"
                                  request.getServerName()
                                  + // "myhost"
                                  ":"
                                  + // ":"
                                  request.getServerPort()
                                  + // "80"
                                  request
                                      .getContextPath(); // "/myContextPath" or "" if deployed in
                                                         // root context

                          mailService.sendActivationEmail(user, baseUrl);
                          return new ResponseEntity<>(HttpStatus.CREATED);
                        }));
  }
 @RequestMapping(
     value = "/account/reset_password/init",
     method = RequestMethod.POST,
     produces = MediaType.TEXT_PLAIN_VALUE)
 @Timed
 public ResponseEntity<?> requestPasswordReset(
     @RequestBody String mail, HttpServletRequest request) {
   return userService
       .requestPasswordReset(mail)
       .map(
           user -> {
             String baseUrl =
                 request.getScheme()
                     + "://"
                     + request.getServerName()
                     + ":"
                     + request.getServerPort()
                     + request.getContextPath();
             mailService.sendPasswordResetMail(user, baseUrl);
             return new ResponseEntity<>("e-mail was sent", HttpStatus.OK);
           })
       .orElse(new ResponseEntity<>("e-mail address not registered", HttpStatus.BAD_REQUEST));
 }