Index: forgon-core/src/main/java/com/forgon/security/service/UserManagerImpl.java =================================================================== diff -u -r22269 -r22276 --- forgon-core/src/main/java/com/forgon/security/service/UserManagerImpl.java (.../UserManagerImpl.java) (revision 22269) +++ forgon-core/src/main/java/com/forgon/security/service/UserManagerImpl.java (.../UserManagerImpl.java) (revision 22276) @@ -2,7 +2,9 @@ import java.sql.ResultSet; import java.sql.SQLException; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -26,6 +28,9 @@ import com.forgon.directory.model.OrgUnit; import com.forgon.directory.model.OrgUserRelation; import com.forgon.directory.vo.LoginUserData; +import com.forgon.log.model.Log; +import com.forgon.log.service.LogManager; +import com.forgon.security.model.ModifyPwdRecord; import com.forgon.security.model.Operation; import com.forgon.security.model.Role; import com.forgon.security.model.User; @@ -35,6 +40,7 @@ import com.forgon.tools.Constants; import com.forgon.tools.GB2Alpha; import com.forgon.tools.GB2WB; +import com.forgon.tools.SpringBeanManger; import com.forgon.tools.SqlBuilder; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.BasePoManagerImpl; @@ -47,6 +53,8 @@ */ public class UserManagerImpl extends BasePoManagerImpl implements UserManager { + private LogManager appLogManager; + public UserManagerImpl() { super(User.class); } @@ -157,14 +165,41 @@ public void save(User user) { PasswordEncoder passwordEncoder = new Md5PasswordEncoder(); if (StringUtils.isNotEmpty(user.getPasswd())) { - user.setPasswd(passwordEncoder.encodePassword(user.getPasswd(), - null)); + String newPasswd = passwordEncoder.encodePassword(user.getPasswd(),null); + addLogAndModifyPwdRecord(user,newPasswd); + user.setPasswd(newPasswd); } user.setSpelling(GB2Alpha.string2Alpha(user.getFullName())); user.setWbCode(GB2WB.getWBCode(user.getFullName())); objectDao.saveOrUpdate(user); } + public void addLogAndModifyPwdRecord(User user,String newPasswd){ + //判断id是否为空,为空则加入修改密码日志,并且存入修改密码记录表中 + if (user.getId() != null) { + ModifyPwdRecord modifyPwdRecord =new ModifyPwdRecord(); + ResultSet userResultSet = null; + try { + userResultSet = objectDao.executeSql(" select passwd from ss_users where id = "+ user.getId()); + while (userResultSet.next()) { + modifyPwdRecord.setOldPasswd(userResultSet.getString("passwd")); + } + } catch (Exception e) { + throw new RuntimeException("获取用户密码出错!"); + }finally{ + DatabaseUtil.closeResultSetAndStatement(userResultSet); + } + appLogManager = (LogManager) SpringBeanManger.getBean("appLogManager"); + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_USER, Log.TYPE_UPDATE,"用户修改密码"); + modifyPwdRecord.setName(user.getName()); + modifyPwdRecord.setNewPasswd(newPasswd); + modifyPwdRecord.setUpdatePwdTime(new Date()); + modifyPwdRecord.setUpdatePeopleName(AcegiHelper.getLoginUser().getUserName()); + objectDao.save(modifyPwdRecord); + } + } + + //查看一下saveAndKeepPassword public void saveAndKeepPassword(User user) { if (user.getId() == null) { save(user); @@ -173,7 +208,6 @@ user.setWbCode(GB2WB.getWBCode(user.getFullName())); objectDao.saveOrUpdate(user); } - } public Set getAllOperationIds(User user) { Index: ssts-web/src/main/webapp/personalSetting/showModifyPWDWindowByUnmodified.js =================================================================== diff -u -r22269 -r22276 --- ssts-web/src/main/webapp/personalSetting/showModifyPWDWindowByUnmodified.js (.../showModifyPWDWindowByUnmodified.js) (revision 22269) +++ ssts-web/src/main/webapp/personalSetting/showModifyPWDWindowByUnmodified.js (.../showModifyPWDWindowByUnmodified.js) (revision 22276) @@ -96,8 +96,10 @@ } }, failure : function(form, action) { - if(action.result.message){ + if(action.result && action.result.message){ alert(action.result.message); + }else{ + Ext.MessageBox.show({title:'错误提示', msg:'修改密码失败!',buttons:Ext.Msg.OK,icon:Ext.Msg.ERROR}); } } }); Index: ssts-web/src/main/webapp/personalSetting/modifyPWDByExt.js =================================================================== diff -u -r22269 -r22276 --- ssts-web/src/main/webapp/personalSetting/modifyPWDByExt.js (.../modifyPWDByExt.js) (revision 22269) +++ ssts-web/src/main/webapp/personalSetting/modifyPWDByExt.js (.../modifyPWDByExt.js) (revision 22276) @@ -82,8 +82,10 @@ } }, failure:function(form, action){ - if(action.result.message){ + if(action.result && action.result.message){ alert(action.result.message); + }else{ + Ext.MessageBox.show({title:'错误提示', msg:'修改密码失败!',buttons:Ext.Msg.OK,icon:Ext.Msg.ERROR}); } } }); Index: ssts-web/src/main/java/com/forgon/disinfectsystem/directory/dwr/table/UserTableManager.java =================================================================== diff -u -r15752 -r22276 --- ssts-web/src/main/java/com/forgon/disinfectsystem/directory/dwr/table/UserTableManager.java (.../UserTableManager.java) (revision 15752) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/directory/dwr/table/UserTableManager.java (.../UserTableManager.java) (revision 22276) @@ -355,6 +355,7 @@ if(u != null){ u.getUserAttribute().setResetPasswordDate(resetDate); sysUserManager.saveUser(u); + //功能开启,要添加日志和修改密码记录表 } } } Index: forgon-core/src/main/java/com/forgon/log/model/Log.java =================================================================== diff -u -r22204 -r22276 --- forgon-core/src/main/java/com/forgon/log/model/Log.java (.../Log.java) (revision 22204) +++ forgon-core/src/main/java/com/forgon/log/model/Log.java (.../Log.java) (revision 22276) @@ -29,6 +29,7 @@ public static final String LOG_TYPE_MODIFY_TOUSSE_PRICE = "修改器械包价格"; public static final String LOG_TYPE_MODIFY_TOUSSE_BORROW_PRICE = "修改器械包借出价格"; public static final String LOG_TYPE_MODIFY_TOUSSE_PROXY_PRICE = "修改器械包代理灭菌价格"; + public static final String LOG_TYPE_MODIFY_USER_PWD = "修改用户密码"; public static final String MODEL_LOGIN = "登录"; public static final String MODEL_APPLICATION = "申请模块"; @@ -57,7 +58,8 @@ public static final String MODEL_PRINT = "打印"; public static final String MODEL_MATERIALDEFINITION = "材料定义"; public static final String MODEL_EXPENSIVEGOODS = "高值耗材"; - + public static final String MODEL_USER = "用户定义"; + public static final String TYPE_ADD = "A";//添加 public static final String TYPE_UPDATE = "U";//修改 public static final String TYPE_DELETE = "D";//删除 Index: forgon-core/src/main/java/com/forgon/security/service/UserManager.java =================================================================== diff -u -r22262 -r22276 --- forgon-core/src/main/java/com/forgon/security/service/UserManager.java (.../UserManager.java) (revision 22262) +++ forgon-core/src/main/java/com/forgon/security/service/UserManager.java (.../UserManager.java) (revision 22276) @@ -96,4 +96,11 @@ * @return */ public User getCurrentUser(); + + /** + * 为修改用户密码, 添加日志、修改用户密码表 + * @param user 被修改的用户 + * @param newPasswd 新的密码 + */ + public void addLogAndModifyPwdRecord(User user,String newPasswd); } Index: forgon-core/src/main/java/com/forgon/security/model/ModifyPwdRecord.java =================================================================== diff -u --- forgon-core/src/main/java/com/forgon/security/model/ModifyPwdRecord.java (revision 0) +++ forgon-core/src/main/java/com/forgon/security/model/ModifyPwdRecord.java (revision 22276) @@ -0,0 +1,97 @@ +package com.forgon.security.model; + +import java.util.Date; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Table; +import javax.persistence.Id; + +/** + * 用户修改密码记录定义(方便提醒用户定期修改密码) + * @author ZhuangQinLiu + * + */ +@Entity +@Table +public class ModifyPwdRecord{ + + private Long id; + + /** + * 用户登录名(即:工号) + */ + private String name; + + /** + * 旧密码 + */ + private String oldPasswd; + + /** + * 新密码 + */ + private String newPasswd; + + /** + * 修改人登录名 + */ + private String updatePeopleName; + + /** + * 修改时间 + */ + private Date updatePwdTime; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getOldPasswd() { + return oldPasswd; + } + + public void setOldPasswd(String oldPasswd) { + this.oldPasswd = oldPasswd; + } + + public String getNewPasswd() { + return newPasswd; + } + + public void setNewPasswd(String newPasswd) { + this.newPasswd = newPasswd; + } + + public String getUpdatePeopleName() { + return updatePeopleName; + } + + public void setUpdatePeopleName(String updatePeopleName) { + this.updatePeopleName = updatePeopleName; + } + + public Date getUpdatePwdTime() { + return updatePwdTime; + } + + public void setUpdatePwdTime(Date updatePwdTime) { + this.updatePwdTime = updatePwdTime; + } + +} Index: ssts-web/src/main/webapp/personalSetting/showModifyPWDWindowByExt.js =================================================================== diff -u -r22269 -r22276 --- ssts-web/src/main/webapp/personalSetting/showModifyPWDWindowByExt.js (.../showModifyPWDWindowByExt.js) (revision 22269) +++ ssts-web/src/main/webapp/personalSetting/showModifyPWDWindowByExt.js (.../showModifyPWDWindowByExt.js) (revision 22276) @@ -100,8 +100,10 @@ } }, failure : function(form, action) { - if(action.result.message){ + if(action.result && action.result.message){ alert(action.result.message); + }else{ + Ext.MessageBox.show({title:'错误提示', msg:'修改密码失败!',buttons:Ext.Msg.OK,icon:Ext.Msg.ERROR}); } } });