Ejemplo n.º 1
0
  public ActionForward run(
      ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response)
      throws Exception {
    if (log.isDebugEnabled()) log.debug("Entering PassResetForm");

    PassResetForm passResetForm = (PassResetForm) form;
    String email = passResetForm.getEmail();

    UserService userService = serviceFactory.createUserService();
    User user = userService.findUserByEmail(email);

    if (user == null) {
      if (log.isDebugEnabled()) log.debug("User not found, E-Mail: " + email);
      addError("error.user.notfound");
      return mapping.findForward("FAILURE");
    }

    String password = PasswordGenerator.createNewPassword();

    MessageResources msgRes = getResources(request);

    String nameTo = user.getFirstName() + " " + user.getName();
    String nameFrom = ""; // loginUser.getFirstName() + " " + loginUser.getName();
    StringBuilder sbMailTxt = new StringBuilder();
    sbMailTxt.append(
        msgRes.getMessage(
            "mail.password.init.text",
            nameTo,
            ConfigResources.getInstance().getApplicationTitle(),
            user.getLoginName(),
            password));
    sbMailTxt.append(
        msgRes.getMessage("mail.link", ConfigResources.getInstance().getApplicationUri()));
    sbMailTxt.append(msgRes.getMessage("mail.footer", nameFrom));

    try {
      new SMTP()
          .sendEmail(
              user.getEmail(),
              ConfigResources.getInstance().getAutoMailSender(),
              msgRes.getMessage("mail.password.init.subject"),
              sbMailTxt.toString());
    } catch (Exception e) {
      if (log.isInfoEnabled()) log.info("error.sendMail: " + user.getEmail(), e);
      addError("error.sendMail");
      return mapping.findForward("FAILURE");
    }
    SecurityService secService = serviceFactory.createSecurityService();
    TqmUser securityUser = (TqmUser) secService.loadUserByUsername(user.getLoginName());
    SecurityAdministrationService secAdminService =
        serviceFactory.createSecurityAdministrationService();
    securityUser.changePassword(
        securityUser.getPassword(), secAdminService.createPasswordHash(password, securityUser));
    secAdminService.updateUser(securityUser);

    addMessage("success.user.password.reset");
    return mapping.findForward("SUCCESS");
  }