Package com.tll.server.rpc

Source Code of com.tll.server.rpc.ForgotPasswordService

/**
* The Logic Lab
* @author jpk
* Aug 25, 2007
*/
package com.tll.server.rpc;

import java.util.HashMap;
import java.util.Map;

import org.springframework.mail.MailSendException;

import com.tll.common.data.Payload;
import com.tll.common.data.Status;
import com.tll.common.data.rpc.IForgotPasswordService;
import com.tll.common.msg.Msg.MsgAttr;
import com.tll.common.msg.Msg.MsgLevel;
import com.tll.dao.EntityNotFoundException;
import com.tll.mail.IMailContext;
import com.tll.mail.MailManager;
import com.tll.mail.MailRouting;
import com.tll.model.IUserRef;
import com.tll.service.ChangeUserCredentialsFailedException;
import com.tll.service.IForgotPasswordHandler;
import com.tll.util.StringUtil;

/**
* ForgotPasswordService
* @author jpk
*/
public class ForgotPasswordService extends RpcServlet implements IForgotPasswordService {

  private static final long serialVersionUID = 1144692563596509841L;
  private static final String EMAIL_TEMPLATE_NAME = "forgot-password";

  private ForgotPasswordServiceContext getContext() {
    return (ForgotPasswordServiceContext) getThreadLocalRequest().getSession(false).getServletContext().getAttribute(
        ForgotPasswordServiceContext.KEY);
  }

  public Payload requestPassword(final String emailAddress) {
    final Status status = new Status();
    final Payload p = new Payload(status);
    final Map<String, Object> data = new HashMap<String, Object>();

    if(StringUtil.isEmpty(emailAddress)) {
      status.addMsg("An email address must be specified.", MsgLevel.ERROR, MsgAttr.STATUS.flag);
    }
    else {
      final ForgotPasswordServiceContext context = getContext();
      try {
        final IForgotPasswordHandler handler = context.getForgotPasswordHandler();
        final IUserRef user = handler.getUserRef(emailAddress);
        final String rp = handler.resetPassword(user.getId());
        data.put("username", user.getUsername());
        data.put("emailAddress", user.getEmailAddress());
        data.put("password", rp);
        final MailManager mailManager = context.getMailManager();
        final MailRouting mr = mailManager.buildAppSenderMailRouting(user.getEmailAddress());
        final IMailContext mailContext = mailManager.buildTextTemplateContext(mr, EMAIL_TEMPLATE_NAME, data);
        mailManager.sendEmail(mailContext);
        status.addMsg("Password reminder email was sent.", MsgLevel.INFO, MsgAttr.STATUS.flag);
      }
      catch(final EntityNotFoundException nfe) {
        exceptionToStatus(nfe, status);
        context.getExceptionHandler().handleException(nfe);
      }
      catch(final ChangeUserCredentialsFailedException e) {
        exceptionToStatus(e, status);
        context.getExceptionHandler().handleException(e);
      }
      catch(final MailSendException mse) {
        exceptionToStatus(mse, status);
        context.getExceptionHandler().handleException(mse);
      }
    }

    return p;
  }

}
TOP

Related Classes of com.tll.server.rpc.ForgotPasswordService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.