package com.usemodj.jpetstore.struts.action;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import com.usemodj.jpetstore.domain.Signon;
import com.usemodj.jpetstore.service.SignonService;
import com.usemodj.struts.UpdatePasswordException;
import com.usemodj.struts.action.BaseAction;
public class ChangePasswordAction extends BaseAction {
private static final long serialVersionUID = -122471821572332138L;
private static Logger logger = Logger.getLogger(ChangePasswordAction.class);
private Signon signon;
public String execute() throws Exception {
logger.debug("..ChangePasswordAtion.execute() is called..");
Signon _signon = (Signon)this.getSession(LOGIN);
if( null == _signon) {
logger.debug("..Login Session is null!");
this.addActionMessage(getText("login.required"));
return LOGIN;
}
if( null == signon || null == signon.getPassword() || null == signon.getPasswordNew()
|| null == signon.getPasswordConfirm() || signon.getPasswordNew().isEmpty()
|| !signon.getPasswordNew().equals(signon.getPasswordConfirm())
|| !signon.getPassword().equals(_signon.getPassword())){
this.addActionMessage( getText("password.mismatch"));
logger.debug("..password mismatch!");
return INPUT;
}
SqlSession session = this.getSqlSessionFactory().openSession();
SignonService signonService = new SignonService();
try {
logger.debug("..signonService.updatePassword is called....");
_signon.setPassword( signon.getPasswordNew());
signonService.updatePassword(session, _signon);
this.setSession(LOGIN, _signon);
} catch (UpdatePasswordException e) {
logger.error(getText("update.password.exception")+ ": "+ e.getMessage());
this.addActionMessage( getText("update.password.exception"));
return INPUT;
}catch (Exception e) {
logger.error( e.getMessage());
return INPUT;
} finally {
session.close();
}
this.addActionMessage( getText("change.password.success"));
return SUCCESS;
}
public String input() throws Exception {
//비밀번호 변경은 로그인 상태에서 가능하다.
Signon _signon = (Signon)this.getSession(LOGIN);
if( null == _signon) {
this.addActionMessage(getText("login.required"));
return LOGIN;
}
return INPUT;
}
public Signon getSignon() {
return signon;
}
public void setSignon(Signon signon) {
this.signon = signon;
}
}