package com.kingdee.shr.base.syssetting.web.handler; import com.kingdee.bos.BOSException; import com.kingdee.bos.Context; import com.kingdee.bos.dao.ormapping.ObjectUuidPK; import com.kingdee.bos.util.BOSUuid; import com.kingdee.eas.base.permission.PermItemInfo; import com.kingdee.eas.common.EASBizException; import com.kingdee.shr.base.permission.api.service.SHRFunctionPermissionService; import com.kingdee.shr.base.syssetting.app.cache.PermItemURLCache; import com.kingdee.shr.base.syssetting.context.SHRContext; import com.kingdee.shr.base.syssetting.exception.SHRWebException; import com.kingdee.shr.base.syssetting.exception.ShrWebBizException; import com.kingdee.shr.base.syssetting.ml.SHRWebResource; import com.kingdee.shr.base.syssetting.util.FileOperateUtil; import com.kingdee.shr.base.syssetting.util.SHRSyssettingUtil; import com.kingdee.shr.websso.IWSUser; import com.kingdee.shr.websso.WSUserFactory; import com.kingdee.shr.websso.WSUserInfo; import com.kingdee.util.StringUtils; import com.kingdee.util.UuidException; import org.apache.log4j.Logger; import org.springframework.ui.ModelMap; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.util.Properties; /** * description: WSUserEditHandler
* date: 20/11/2025 ÉÏÎç 11:19
* author: lhbj
* version: 1.0
*/ public class WSUserEditHandler extends EditHandler { private static Logger logger = Logger.getLogger(WSUserEditHandler.class); public WSUserEditHandler() { } protected void beforeRender(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException { WSUserInfo wsUser = (WSUserInfo)modelMap.get("model"); if (wsUser != null && wsUser.getId() != null && !StringUtils.isEmpty(wsUser.getPasswd())) { String operateStatus = this.getOperateStatus(request, modelMap); if ("EDIT".equalsIgnoreCase(operateStatus)) { wsUser.setPasswd((String)null); } else { String bs = this.substitution(wsUser.getPasswd()); wsUser.setPasswd(bs); } } super.beforeRender(request, response, modelMap); } public String downloadAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException { String wsUserId = request.getParameter("billId"); if (StringUtils.isEmpty(wsUserId)) { throw new ShrWebBizException(SHRWebResource.getString("com.kingdee.shr.base.syssetting.CommonserviceResource", "sdk_non_existent")); } else { File propFile = null; try { Context ctx = SHRContext.getInstance().getContext(); String permItemUrl = "/dynamic.do?method=initalize#uri=com.kingdee.shr.websso.app.WSUser.form"; PermItemInfo permItem = PermItemURLCache.getPermItemInfoByURL(ctx, permItemUrl); SHRFunctionPermissionService.checkCurrnetUserFunctionPermission(ctx, permItem); IWSUser instance = WSUserFactory.getRemoteInstance(); WSUserInfo wsUser = (WSUserInfo)((WSUserInfo)instance.getValue(new ObjectUuidPK(BOSUuid.read(wsUserId)))); String realPath = SHRSyssettingUtil.getShrPropertiesPath(); StringBuffer sb = new StringBuffer(); String zipPath = sb.append(realPath).append(File.separator).append("osf_ws_client").append(File.separator).toString(); propFile = new File(zipPath + "userInfo.properties"); if (!propFile.exists()) { propFile.createNewFile(); } boolean isCloudServ = false; this.writePropFile(propFile, wsUser, isCloudServ); String userInfoP = "com/kingdee/shr/osf/webservice/client/userInfo.properties"; FileOperateUtil.downloadSDK(zipPath, propFile, userInfoP, response); } catch (IOException var21) { logger.error(var21.getMessage()); throw new SHRWebException(var21.getMessage(), var21); } catch (EASBizException var22) { throw new ShrWebBizException(SHRWebResource.getString("com.kingdee.shr.base.syssetting.CommonserviceResource", "download_fails"), var22); } catch (UuidException | BOSException var23) { throw new SHRWebException(var23.getMessage(), var23); } finally { if (propFile != null) { propFile.delete(); } } return null; } } private void writePropFile(File propFile, WSUserInfo wsUser, boolean isCloudServ) throws ShrWebBizException { Properties prop = new Properties(); prop.setProperty("easAddr", wsUser.getShrAddr()); prop.setProperty("userName", wsUser.getUserName()); String pwd = wsUser.getPasswd(); prop.setProperty("password", pwd); prop.setProperty("dcName", wsUser.getDcName()); prop.setProperty("slnName", wsUser.getSlnName()); prop.setProperty("language", wsUser.getLanguage().getValue()); prop.setProperty("dbType", (String)wsUser.get("dbtype")); if (isCloudServ) { prop.setProperty("isCloudServ", "true"); } FileOutputStream fos = null; try { fos = new FileOutputStream(propFile, false); prop.store(fos, (String)null); } catch (FileNotFoundException var12) { throw new ShrWebBizException(SHRWebResource.getString("com.kingdee.shr.base.syssetting.CommonserviceResource", "api_user_config_non_exist"), var12); } catch (IOException var13) { throw new ShrWebBizException(SHRWebResource.getString("com.kingdee.shr.base.syssetting.CommonserviceResource", "api_user_config_add_fails"), var13); } finally { FileOperateUtil.closeStream(new Closeable[]{fos}); } } private String substitution(String str) { int length = str.length(); StringBuffer sb = new StringBuffer(); for(int i = 0; i < length; ++i) { sb.append("*"); } return sb.toString(); } }