/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.rbac.action.system;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.rbac.common.BaseAction;
import com.rbac.entity.SysAccount;
import com.rbac.form.system.AccountModifyForm;
import com.rbac.service.AccountService;
import com.rbac.util.CommonUtils;
import com.rbac.util.PasswordHash;
/**
* MyEclipse Struts
* Creation date: 04-21-2014
*
* XDoclet definition:
* @struts.action path="/accountModify" name="accountModifyForm" input="/system/accountModify.jsp" scope="request" validate="true"
* @struts.action-forward name="success" path="/system/accountList.jsp"
*/
public class AccountModifyAction extends BaseAction {
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
AccountModifyForm accountModifyForm = (AccountModifyForm) form;
AccountService accountService = (AccountService) super.getBean("accountService");
if(CommonUtils.isNotBlank(accountModifyForm.getSubmit())){
SysAccount account = new SysAccount();
if(CommonUtils.isNotBlank(accountModifyForm.getId())){
Long id = CommonUtils.parseLong(accountModifyForm.getId());
account = accountService.getAccountById(id);
account.setModifierId(super.getCurrentAccountId(request));
//就算在mysql中加了current stamp on update,也需要配置hibernate后才能正常运行
account.setModifyTime(new Date());
}
else{
account.setCreatorId(super.getCurrentAccountId(request));
account.setCreateTime(new Date());
account.setModifierId(super.getCurrentAccountId(request));
account.setModifyTime(new Date());
}
account.setUsername(accountModifyForm.getUsername());
account.setRealname(accountModifyForm.getRealname());
account.setRoleIds(accountModifyForm.getRoleId());
if(CommonUtils.isNotBlank(accountModifyForm.getPassword())){
try {
String pwdHash = PasswordHash.createHash(accountModifyForm.getPassword().trim());
if(CommonUtils.isNotBlank(pwdHash)){
String[] pwd = pwdHash.split(":");
if(pwd!=null && pwd.length==3){
account.setPassword(pwd[2]);
account.setSalt(pwd[1]);
}
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (InvalidKeySpecException e) {
e.printStackTrace();
}
}
accountService.saveOrUpdateAccount(account);
return mapping.findForward("success");
}
return mapping.getInputForward();
}
}