Ejemplo n.º 1
0
  /**
   * Execute sending the password hint via e-mail.
   *
   * @return success if username works, input if not
   */
  public String execute() {
    List<Object> args = new ArrayList<Object>();

    // ensure that the username has been sent
    if (username == null) {
      log.warn("Username not specified, notifying user that it's a required field.");

      args.add(getText("user.username"));
      addActionError(getText("errors.requiredField", args));
      return INPUT;
    }

    if (log.isDebugEnabled()) {
      log.debug("Processing Password Hint...");
    }

    // look up the user's information
    try {
      User user = userManager.getUserByUsername(username);
      String hint = user.getPasswordHint();

      if (hint == null || hint.trim().equals("")) {
        log.warn("User '" + username + "' found, but no password hint exists.");
        addActionError(getText("login.passwordHint.missing"));
        return INPUT;
      }

      StringBuffer msg = new StringBuffer();
      msg.append("Your password hint is: ").append(hint);
      msg.append("\n\nLogin at: ").append(RequestUtil.getAppURL(getRequest()));

      mailMessage.setTo(user.getEmail());
      String subject = '[' + getText("webapp.name") + "] " + getText("user.passwordHint");
      mailMessage.setSubject(subject);
      mailMessage.setText(msg.toString());
      mailEngine.send(mailMessage);

      args.add(username);
      args.add(user.getEmail());

      saveMessage(getText("login.passwordHint.sent", args));
    } catch (UsernameNotFoundException e) {
      log.warn(e.getMessage());
      args.add(username);
      addActionError(getText("login.passwordHint.error", args));
      getSession().setAttribute("errors", getActionErrors());
      return INPUT;
    } catch (MailException me) {
      addActionError(me.getCause().getLocalizedMessage());
      getSession().setAttribute("errors", getActionErrors());
      return INPUT;
    }

    return SUCCESS;
  }
  @RequestMapping(method = RequestMethod.GET)
  public ModelAndView handleRequest(HttpServletRequest request) throws Exception {
    log.debug("entering 'handleRequest' method...");

    String username = request.getParameter("username");
    MessageSourceAccessor text = new MessageSourceAccessor(messageSource, request.getLocale());

    // ensure that the username has been sent
    if (username == null) {
      log.warn("Username not specified, notifying user that it's a required field.");
      request.setAttribute(
          "error", text.getMessage("errors.required", text.getMessage("user.username")));
      return new ModelAndView("login");
    }

    log.debug("Processing Password Hint...");

    // look up the user's information
    try {
      User user = userManager.getUserByUsername(username);

      StringBuffer msg = new StringBuffer();
      msg.append("Your password hint is: ").append(user.getPasswordHint());
      msg.append("\n\nLogin at: ").append(RequestUtil.getAppURL(request));

      message.setTo(user.getEmail());
      String subject =
          '[' + text.getMessage("webapp.name") + "] " + text.getMessage("user.passwordHint");
      message.setSubject(subject);
      message.setText(msg.toString());
      mailEngine.send(message);

      saveMessage(
          request,
          text.getMessage("login.passwordHint.sent", new Object[] {username, user.getEmail()}));
    } catch (UsernameNotFoundException e) {
      log.warn(e.getMessage());
      saveError(request, text.getMessage("login.passwordHint.error", new Object[] {username}));
    } catch (MailException me) {
      log.warn(me.getMessage());
      saveError(request, me.getCause().getLocalizedMessage());
    }

    return new ModelAndView(new RedirectView(request.getContextPath()));
  }