| | |
| | | package com.vci.frameworkcore.compatibility.impl; |
| | | |
| | | import com.vci.client.common.providers.ClientServiceProvider; |
| | | import com.vci.corba.framework.data.DeptInfo; |
| | | import com.vci.corba.framework.data.RoleInfo; |
| | | import com.vci.corba.omd.etm.EnumItem; |
| | | import com.vci.corba.omd.etm.EnumType; |
| | | import com.vci.dto.SmUserDTO; |
| | | import com.vci.common.util.ThreeDES; |
| | | import com.vci.corba.common.PLException; |
| | |
| | | * 使用角色查询的时候的查询字段 |
| | | */ |
| | | public static final String QUERY_FIELD_ROLE = "roleUser.plroleuid"; |
| | | |
| | | /** |
| | | * 密级的枚举key |
| | | */ |
| | | private static final String ENUM_USERSECURITYENUM = "usersecurityenum"; |
| | | |
| | | /** |
| | | * 必填列 |
| | |
| | | smUserVO.setId(userInfo.userName); |
| | | smUserVO.setName(userInfo.trueName); |
| | | smUserVO.setSecretGrade(userInfo.secretGrade); |
| | | smUserVO.setSecretGradeText(UserSecretEnum.getSecretText(userInfo.secretGrade)); |
| | | //密级处理 |
| | | String secretGrade = "" + userInfo.secretGrade; |
| | | EnumType item = platformClientUtil.getEnumService().getEnumTypeByName(ENUM_USERSECURITYENUM); |
| | | EnumItem[] children = item.items; |
| | | for(EnumItem child: children){ |
| | | if(child.value.equals(secretGrade)){ |
| | | smUserVO.setSecretGradeText(child.name); |
| | | break; |
| | | } |
| | | } |
| | | smUserVO.setUserType(String.valueOf(userInfo.userType)); |
| | | smUserVO.setUserTypeText(UserTypeEnum.getTextByValue(String.valueOf(userInfo.userType))); |
| | | smUserVO.setDescription(userInfo.desc); |
| | |
| | | |
| | | /** |
| | | * 校验密码是否相同,在新平台中存储的密码是两次md5 |
| | | * @param userOid 用户主键 |
| | | * @param userName 用户名 |
| | | * @param md5Password 已经md5加密一次的密码--老的平台里不能加密 |
| | | * @return true 表示相等,false表示不相等 |
| | | */ |
| | | @Override |
| | | public boolean checkPasswordEqual(String md5Password, String userOid) { |
| | | if(StringUtils.isBlank(md5Password) || StringUtils.isBlank(userOid)){ |
| | | public boolean checkPasswordEqual(String md5Password, String userName) { |
| | | if(StringUtils.isBlank(md5Password) || StringUtils.isBlank(userName)){ |
| | | return false; |
| | | } |
| | | String sql = " select plpassword from pluser where pluid = :userOid"; |
| | | String sql = " select plpassword from pluser where plusername = :userName"; |
| | | Map<String,String> conditionMap = new HashMap<>(); |
| | | conditionMap.put("userOid",userOid.trim()); |
| | | conditionMap.put("userName",userName.trim()); |
| | | List<BusinessObject> BusinessObjectList = boService.queryBySql(sql, conditionMap); |
| | | if(CollectionUtils.isEmpty(BusinessObjectList)){ |
| | | return false; |
| | |
| | | |
| | | /** |
| | | * 修改密码 |
| | | * @param userOid 用户主键 |
| | | * @param userName 用户主键 |
| | | * @param oldPassword 旧的密码 |
| | | * @param password 新的密码 |
| | | * @param confirmPassword 确认密码 |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean changePassword(String userOid,String oldPassword, String password, |
| | | public boolean changePassword(String userName,String oldPassword, String password, |
| | | String confirmPassword) throws Exception { |
| | | WebUtil.alertNotNull(userOid,"用户主键",oldPassword,"登录密码",password,"密码",confirmPassword,"确认密码"); |
| | | VciBaseUtil.alertNotNull(userName,"用户名",oldPassword,"登录密码",password,"密码",confirmPassword,"确认密码"); |
| | | if(!password.equals(confirmPassword)){ |
| | | throw new VciBaseException("密码和确认密码不相等"); |
| | | } |
| | |
| | | oldPassword = Func.decryptAes(oldPassword,"daliantan0v0vcip"); |
| | | password = Func.decryptAes(password,"daliantan0v0vcip"); |
| | | //对比旧密码 |
| | | boolean b = this.checkPasswordEqual(oldPassword, userOid); |
| | | boolean b = this.checkPasswordEqual(oldPassword, userName); |
| | | if(!b){ |
| | | throw new PLException("500", new String[] { "您输入的密码与登录密码不一致,请重新输入!"}); |
| | | } |
| | | SmUserVO smUserVO = getUserByUserOid(userOid); |
| | | if(Func.isEmpty(smUserVO)){ |
| | | UserInfo userInfo = platformClientUtil.getFrameworkService().getUserObjectByUserName(userName); |
| | | if(Func.isEmpty(userInfo) || Func.isBlank(userInfo.id)){ |
| | | throw new VciBaseException("当前修改的用户不存在!"); |
| | | } |
| | | //TODO:校验密码是否符合策略 |
| | | String error = platformClientUtil.getFrameworkService().checkPasswordStrategyByUserId(smUserVO.getId(), password,null); |
| | | String error = platformClientUtil.getFrameworkService().checkPasswordStrategyByUserId(userInfo.id, password,null); |
| | | if (!StringUtils.isBlank(error)) { |
| | | throw new VciBaseException("当前设置的密码,密码策略校验未通过!"); |
| | | } |
| | | |
| | | //TODO:考虑是否需要将修改方式改成直接调用平台的接口,因为现在的修改方式没能正确的更新缓存 |
| | | /*UserInfo userInfo = new UserInfo(); |
| | | userInfo.id = userOid.trim(); |
| | | userInfo.pwd = password; |
| | | userInfo.pwdUpdateTime = System.currentTimeMillis(); |
| | | boolean updateBoolean = platformClientUtil.getFrameworkService().updateUser(userInfo, new UserEntityInfo(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(), null)); |
| | | return updateBoolean;*/ |
| | | |
| | | ThreeDES des = new ThreeDES();// 实例化一个对�? |
| | | des.getKey("daliantan0v0");// 生成密匙 |
| | | String encPassword = des.getEncString(password); |
| | | //修改密码的同时需要将密码修改时间也更新 |
| | | String sql = "update pluser set plpassword = '" + encPassword + "', plpwdupdatetime = TO_DATE('" |
| | | + Func.format(new Date(),"yyyy-MM-dd HH:mm:ss") +"','yyyy-MM-dd hh24:mi:ss') where pluid = '" + userOid.trim() + "'"; |
| | | try { |
| | | return platformClientUtil.getBOFactoryService().executeUpdateSql(sql); |
| | | } catch (PLException vciError) { |
| | | throw WebUtil.getVciBaseException(vciError); |
| | | } |
| | | return updateBoolean; |
| | | } |
| | | |
| | | /** |