CK2

来源:互联网 发布:提醒事项软件 编辑:程序博客网 时间:2024/05/20 02:52
/**
 *
 */
package jp.go.stat.tjweb.controllers;


import java.util.Locale;


import javax.inject.Inject;
import javax.servlet.http.HttpSession;
import javax.validation.Valid;


import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


import jp.go.stat.tjweb.Constants;
import jp.go.stat.tjweb.beans.ChangePasswordFormBean;
import jp.go.stat.tjweb.beans.CommonBeanConstants;
import jp.go.stat.tjweb.dao.UserInfoDao;
import jp.go.stat.tjweb.service.ChangePasswordService;
import jp.go.stat.tjweb.util.LogUtil;
import jp.go.stat.tjweb.validator.ChangePasswordFormValidator;


/**
 * パスワード変更Controller.
 * @author 99871
 *
 */
@Controller
public class ChangePasswordController {


/**
* ロガー.
*/
private static final Logger logger = LoggerFactory.getLogger(ChangePasswordController.class);


// private static final String SQL_SELECT_USER = "select PWD_INIT from \""
// + RawUser.TABLE_NAME + "\" where \""
// + RawUser.Columns.LOGIN_ID.getName() + "\"=?";


/**
* ログユーティル.
*/
@Autowired
LogUtil logutil;


/**
* ユーザ情報Dao.
*/
@Autowired
UserInfoDao dao;


/**
* パスワード変更service.
*/
@Autowired
ChangePasswordService service;


/**
*
*/
@Inject
ChangePasswordFormValidator validator;


/**
* ユーザ情報DaoGetter.
* @return rrdao
*/
public UserInfoDao getDao() {
return dao;
}


/**
* ユーザ情報DaoSetter.
* @param rrdao
*            セットする rrdao
*/
public void setDao(UserInfoDao dao) {
this.dao = dao;
}


/**
* パスワード変更serviceGetter.
* @return service
*/
public ChangePasswordService getService() {
return service;
}


/**
* パスワード変更serviceSetter.
* @param service
*            セットする service
*/
public void setService(ChangePasswordService service) {
this.service = service;
}


/**
* @param binder
*/
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.addValidators(validator);
}


/**
* パスワード変更BeanSetter.
* @param userId
* @param password
* @return
*/
@ModelAttribute(Constants.FORM_CHANGE_PASSWORD)
public ChangePasswordFormBean setUpChangePasswordForm() {
logger.debug("enter");
ChangePasswordFormBean ret = new ChangePasswordFormBean();
logger.debug("exit:ret={}", ret);
return ret;
}


/**
* パスワード変更画面表示.
* @param session セッション
* @param form パスワード変更Bean
* @param result リザルト情報
* @param locale ロケール情報
* @return
*/
@RequestMapping(value = "/changePassword")
public String show(HttpSession session,
@ModelAttribute(Constants.FORM_CHANGE_PASSWORD) ChangePasswordFormBean form,
BindingResult result, Locale locale) {
logger.info("enter:session={},form={},result={},locale={}",
logger.isInfoEnabled() ? logutil.sessionAttr(session) : session, form, result, locale);
String ret = service.isLogin(session);
if (ret == null) {
ret = Constants.VIEW_CHANGE_PASSWORD;
service.init(session, form, locale);
}
logger.info("exit:ret={},session={},form={},result={}", ret,
logger.isInfoEnabled() ? logutil.sessionAttr(session) : session, form, result);
return ret;
}


/**
* パスワード変更.
* @param session セッション
* @param form パスワード変更Bean
* @param result リザルト情報
* @param locale ロケール情報
* @return
*/
@RequestMapping(value = "/changePassword/update", method = RequestMethod.POST)
public String update(HttpSession session,
@ModelAttribute(Constants.FORM_CHANGE_PASSWORD) @Valid ChangePasswordFormBean form,
BindingResult result,
Locale locale) {
logger.info("enter:session={},form={},result={},locale={}",
logger.isInfoEnabled() ? logutil.sessionAttr(session) : session, form, result, locale);
String ret = service.isLogin(session);
if (ret == null) {
//TODO
validateCheck(form, result);
if (!result.hasErrors()) {
ret = service.changePassword(session, form, result, locale);
} else {
ret = Constants.VIEW_CHANGE_PASSWORD;
}
}
logger.info("exit:ret={},session={},form={},result={}", ret,
logger.isInfoEnabled() ? logutil.sessionAttr(session) : session, form, result);
return ret;
}
/**
* パスワード変更にて、パスワード全て未入力チェック等々.
*
* @param form
*            入力内容.
* @param result
*            エラー情報.
* @note 入力内容の中にパラメータと更新情報が入っており、共通のvalidatorでは判定できないため、こちらで実施。
*/
private void validateCheck(ChangePasswordFormBean form, BindingResult result) {
// TODO 自動生成されたメソッド・スタブ
// 全てのパスワード の入力チェック.
// 現在のパスワード 未入力チェック.
if(StringUtils.isEmpty(form.getNowPassword())){
result.rejectValue(form.getNowPassword(), "E0001", new String[] { "現在のパスワード" }, "");
return;
}
// 新しいパスワード未入力チェック.
if(StringUtils.isEmpty(form.getNewPassword())){
result.rejectValue(form.getNewPassword(), "E0001", new String[] { "新しいパスワード" }, "");
return;
}
// 新しいパスワード(確認)未入力チェック.
if(StringUtils.isEmpty(form.getConfirmPassword())){
result.rejectValue(form.getConfirmPassword(), "E0001", new String[] { "新しいパスワード(確認)" }, "");
return;
}


// 現在のパスワード 文字数範囲チェック.
if (!StringUtils.isEmpty(form.getNowPassword())) {
int nowPw_length = form.getNowPassword().length();
if (CommonBeanConstants.MIN_PW > nowPw_length
|| CommonBeanConstants.MAX_PW < nowPw_length) {
result.rejectValue("nowPassword", "E0009",
new String[] { "現在のパスワード", String.valueOf(CommonBeanConstants.MIN_PW),
String.valueOf(CommonBeanConstants.MAX_PW) },
"");
return;
}
}
// 新しいパスワード 文字数範囲チェック.
if (!StringUtils.isEmpty(form.getNewPassword())) {
int newPw_length = form.getNewPassword().length();
if (CommonBeanConstants.MIN_PW > newPw_length
|| CommonBeanConstants.MAX_PW < newPw_length) {
result.rejectValue("newPassword", "E0009",
new String[] { "新しいパスワード", String.valueOf(CommonBeanConstants.MIN_PW),
String.valueOf(CommonBeanConstants.MAX_PW) },
"");
return;
}
}
// 新しいパスワード(確認) 文字数範囲チェック.
if (!StringUtils.isEmpty(form.getConfirmPassword())) {
int cfPw_length = form.getConfirmPassword().length();
if (CommonBeanConstants.MIN_PW > cfPw_length
|| CommonBeanConstants.MAX_PW < cfPw_length) {
result.rejectValue("confirmPassword", "E0009",
new String[] { "新しいパスワード(確認)", String.valueOf(CommonBeanConstants.MIN_PW),
String.valueOf(CommonBeanConstants.MAX_PW) },
"");
return;
}
}
// 新しいパスワードに現在のパスワードと同じ値は使用できません
if((StringUtils.isNotEmpty(form.getNewPassword()))&&
(form.getNowPassword().equals(form.getNewPassword()))&&
(form.getNowPassword().equals(form.getConfirmPassword()))){
// result.rejectValue(form.getNewPassword(), "E0305", new String[] { "新しいパスワード" }, "");
result.rejectValue("newPassword", "E0305", new String[] { "新しいパスワード" }, "");
return;
}


// //現在のパスワードが一致しません。 //TODO "E0301"
// if (!errors.hasFieldErrors(ChangePasswordFormBean.FIELD_NOW_PASSWORD)
// && !errors.hasFieldErrors(ChangePasswordFormBean.FIELD_NEW_PASSWORD)
// && !nowPassword.equals(dbPassword)){
//
// errors.rejectValue(ChangePasswordFormBean.FIELD_NOW_PASSWORD,
// ChangePasswordFormBean.MESSAGE_UNMATCH_NOW_PASSWORD);
// }






}


}
0 0
原创粉丝点击