import { Modal, message } from 'antd' const confirm = Modal.confirm; import { WeaTools, WeaLocaleProvider } from 'ecCom'; const getLabel = WeaLocaleProvider.getLabel; import {i18n} from '../public/i18n'; import * as mobx from 'mobx'; import loadjs from 'loadjs'; import LoginPluginFactory from './plugin/loginPluginFactory'; import {addContentPath} from './index.js' const { ua } = WeaTools; const isIE9 = (ua.browser === "IE"); const toJS = mobx.toJS; let remindNum = 0; const getLoginForm = (params) => { let { langid, callback,queryParams } = params; window.currLanguageId = langid; let loginid = params.loginid || ''; if (loginid == '') { loginid = jQuery('#loginid').val(); } let loginFormItems = []; let loginFormHiddenItems = []; let loginSetting = {}; let qrCode = {}; let hasMultiLang = false; loginFormItems = [ { label: '账号', atype: 'account', id: 'loginid', name: 'loginid', type: 'text' }, { label: '密码', atype: 'password', id: 'userpassword', name: 'userpassword', type: 'password'}, ]; queryParams = queryParams && toJS(queryParams); if((queryParams && queryParams.appid && queryParams.service && queryParams.message)){ if(remindNum==0){ remindNum = remindNum+1; WeaTools.callApi('/api/integration/common1/getMessageByCode','POST', {code:queryParams.message,language:langid}).then((rs)=>{ message.error(rs.message || getLabel('503048','系统异常,请联系管理员!'), 3); }).catch(err=>{ if(console) console.log(err) ; }) } } WeaTools.callApi('/api/hrm/login/getLoginForm', 'POST', { loginid, langid }).then((result) => { // loginFormItems = [ // {label: '账号', atype: 'account', id: 'loginid', name: 'loginid', type: 'text'}, // {label: '密码', atype: 'password', id: 'userpassword', name: 'userpassword', type: 'password'}, // {label: '验证码', atype: 'validatecode', id: 'validatecode', name: 'validatecode', type: 'text'}, // {label: '动态令牌口令', atype: 'common', id: 'tokenAuthKey', name: 'tokenAuthKey', type: 'text'} // ]; loginFormItems = result.formItems; loginSetting = result.loginSetting; qrCode = result.qrcode; hasMultiLang = loginSetting.hasMultiLang; loginFormHiddenItems = [ { html: '' } ]; new LoginPluginFactory().getLocalPlugin(result,()=>{ window.loginPlugin && window.loginPlugin.init() ; }) if (callback && typeof callback == 'function') callback({ hasMultiLang, loginFormItems, loginFormHiddenItems, loginSetting,qrCode,message:result.message}); }).catch((err) => { message.error(err); if (callback && typeof callback == 'function') callback({ hasMultiLang, loginFormItems, loginFormHiddenItems, loginSetting,qrCode,message:result.message}); }); }; const login = (params) => { const {openRSA} = params.loginSetting; if(openRSA && openRSA=='1'){//启用RSA加密 __RSAEcrypt__.refreshRsaCode(function(){ loginSync(params); }); }else{ loginSync(params); } }; const loginSync = (params) => { const { userUsbType, hasMultiLang, hasValidateCode, validateCodeKey,numValidateWrong, validateType, showDynamicPwd,openRSA} = params.loginSetting; let { langid, success, failure, logintype, queryParams} = params; const loginid = jQuery('#loginid').val(); let userpassword = jQuery('#userpassword').val(); let dynamicPassword = jQuery('#dynamicPassword').val(); let loginidRsa = loginid ; let userpasswordRsa = userpassword; if(openRSA && openRSA=='1'){//启用RSA加密 userpasswordRsa = __RSAEcrypt__.rsa_data_encrypt(userpassword); loginidRsa = __RSAEcrypt__.rsa_data_encrypt(loginid) ; } const tokenAuthKey = jQuery('#tokenAuthKey') ? jQuery('#tokenAuthKey').val() : ''; const validatecode = jQuery('#validatecode') ? jQuery('#validatecode').val() : ''; const messages = jQuery('#messages') ? jQuery('#messages').val() : ''; message.destroy(); if(jQuery('#userpassword') && jQuery('#userpassword').length>0){ if (loginid == '' || userpassword == '') { message.error(getLabel('386478',"请输入用户名、密码"), 3); if (failure && typeof failure == 'function') failure(); return; } } if(jQuery('#dynamicPassword') && jQuery('#dynamicPassword').length>0){ if(dynamicPassword==''){ message.error(getLabel('20289',"请输入动态密码"), 3); if (failure && typeof failure == 'function') failure(); return; } } if (hasValidateCode && validatecode == '') { message.error(getLabel('84270',"请输入验证码"), 3); if (failure && typeof failure == 'function') failure(); return; } if (userUsbType == '3') { if (tokenAuthKey == '') { message.warning(getLabel('84271',"请输入动态令牌口令")); if (failure && typeof failure == 'function') failure(); return; } else if (!isdigit(tokenAuthKey) || tokenAuthKey.length != 6) { message.warning(getLabel('386435',"动态令牌口令必须为6位数字!")); if (failure && typeof failure == 'function') failure(); return; } } queryParams = toJS(queryParams); if(queryParams && queryParams.appid && queryParams.service){ queryParams.loginid=loginid; queryParams.userpassword=userpasswordRsa; queryParams.isRememberAccount = params.isRememberAccount ? '1':'0' ; queryParams.isRememberPassword = params.isRememberPassword ? '1':'0' ; queryParams.validatecode=validatecode; queryParams.validateCodeKey=validateCodeKey ; queryParams.languid=langid ; let tmps = []; jQuery("body").append("
"); let form = jQuery("form[name='ssoForm']") form.attr("action", (window.ecologyContentPath||'')+'/login/VerifyLoginWeaversso.jsp'); form.attr("method", "post"); form.attr("style", "display:none"); for (let key in queryParams) { form.append(""); } //跳转到sso form.submit(); return; } const {plugin} = params const checkWeakPassword = (nCallback) => { WeaTools.callApi('/api/hrm/password/isWeakPassword', 'POST', { password: userpasswordRsa }).then(datas => { const { weakPasswordDisable, isWeakPassword } = datas; if (isWeakPassword && (weakPasswordDisable === "1")) { confirm({ title: getLabel(131329, '信息确认'), content: getLabel('516219','该密码安全性较低,管理员已开启弱密码禁止保存设置,请修改密码。'), onOk() { showDialog("", addContentPath(`/spa/hrm/index_mobx.html#/main/hrm/password`), { width: 800, height: 500 },"",()=>failure({reflashValidateCode:true})); }, onCancel() { failure({reflashValidateCode:true}); WeaTools.callApi('/api/hrm/login/checkLogout','POST'); }, }); // const url = `/spa/hrm/index_mobx.html#/main/hrm/weakPassConfirm`; // const dialog = ecCom.WeaTools.createDialog({ // url, // title: getLabel(131329, '信息确认'), // icon:"icon-coms02-Warning", // iconBgcolor:"#ff9900", // style: { // width: 380, // height: 161 // }, // onCancel: ()=>{ // failure({reflashValidateCode:true}); // WeaTools.callApi('/api/hrm/login/checkLogout','POST'); // }, // callback:() => { // showDialog("", `/spa/hrm/index_mobx.html#/main/hrm/password`, { width: 800, height: 500 },"",()=>failure({reflashValidateCode:true})); // }, // }); // dialog.show(); } else { nCallback(); } }).catch(() => { nCallback(); }) } WeaTools.callApi('/api/hrm/login/checkLogin', 'POST', { islanguid: langid, loginid: loginidRsa, userpassword: userpasswordRsa, dynamicPassword:dynamicPassword, tokenAuthKey: tokenAuthKey, validatecode: validatecode, validateCodeKey:validateCodeKey, logintype: logintype, messages: messages, isie: isIE9, ...plugin }).then((result) => { if ('access_token' in result && typeof result.access_token === 'string' && result.access_token !== '') { localStorage.setItem('access_token', result.access_token); } else { localStorage.access_token && localStorage.removeItem('access_token'); } if(result.user_token && result.user_token!=''){ userpassword = result.user_token; } if (result.loginstatus == 'true') { if (success && typeof success == 'function') { message.destroy(); if(logintype==2){ checkWeakPassword(()=>success(loginid, userpassword, result)); }else{ WeaTools.callApi('/api/hrm/login/remindLogin', 'POST', {logintype: logintype}).then((result) => { if (result.status == '1') { if (result.isUpPswd == 'true') { if (failure && typeof failure == 'function') failure({reflashValidateCode:true}); confirm({ title: i18n.confirm.systemhints(), content: getLabel('81626',"首次登录需修改密码!"), onOk() { if (failure && typeof failure == 'function') failure({reflashValidateCode:true}); showDialog("", addContentPath(`/spa/hrm/index_mobx.html#/main/hrm/password?optype=2`), { width: 800, height: 500 }); return; }, onCancel() { if (failure && typeof failure == 'function') failure({reflashValidateCode:true}); WeaTools.callApi('/api/hrm/login/checkLogout', 'POST', {}).then((result) => { }); return; }, }); } else { if (result.passwdReminder == '1') { if (result.canpass == '1') { if (result.canremind == '1') { const content = getLabel('386479',"您的密码还有{params}天过期,是否现在修改?").replace('{params}', result.passwdelse); confirm({ title: i18n.confirm.systemhints(), content, onOk() { if (failure && typeof failure == 'function') failure({reflashValidateCode:true}); showDialog("", addContentPath(`/spa/hrm/index_mobx.html#/main/hrm/password`), { width: 800, height: 500 }); return; }, onCancel() { checkWeakPassword(()=>success(loginid, userpassword, result)); }, }); } else { checkWeakPassword(()=>success(loginid, userpassword, result)); } } else { confirm({ title: i18n.confirm.systemhints(), content: getLabel('386480',"您的密码已经过期,请立即修改!"), onOk() { if (failure && typeof failure == 'function') failure({reflashValidateCode:true}); showDialog("", addContentPath(`/spa/hrm/index_mobx.html#/main/hrm/password?optype=1`), { width: 800, height: 500 }); return; }, onCancel() { if (failure && typeof failure == 'function') failure({reflashValidateCode:true}); WeaTools.callApi('/api/hrm/login/checkLogout', 'POST', {}).then((result) => { }); return; }, }); } } else { checkWeakPassword(()=>success(loginid, userpassword, result)); } } } }); } } } else { if (failure && typeof failure == 'function') failure({reflashValidateCode:true}); if (result.msgcode == '66') { return; } message.destroy(); let errorMsg = result.msg || getLabel('386481',"登录失败"); let errorUrl = ''; let errorText = ''; if (result.msgcode == '120') { errorUrl = addContentPath('/spa/hrm/index_mobx.html#/main/hrm/BindTokenKey?langid='+langid); errorText = getLabel('386125',"令牌绑定"); } else if (result.msgcode == '122') { errorUrl = addContentPath('/spa/hrm/index_mobx.html#/main/hrm/BindTokenKey?syncTokenKey=1&langid='+langid); errorText = getLabel('129202',"令牌同步"); } else if (result.msgcode == '19') { if(result.msg) message.warning(result.msg); window.doLicenseSubmit && window.doLicenseSubmit(); return; } // 返回错误信息提示 message.error(( {errorMsg} {errorUrl ? ( showDialog('', errorUrl, { width: 800, height: 465 })}>{errorText} ) : '' } ), 5); } }); }; const getDynamicPassword = (params) => { let { langid, success, failure} = params; const {openRSA} = params.loginSetting; const loginid = jQuery('#loginid').val(); const userpassword = jQuery('#userpassword').val(); const dynamicPassword = jQuery('#dynamicPassword').val(); message.destroy(); if(jQuery('#userpassword') && jQuery('#userpassword').length>0){ if (loginid == '' || userpassword == '') { message.error(getLabel('386478',"请输入用户名、密码"), 3); if (failure && typeof failure == 'function') failure(); return; } } if(openRSA && openRSA=='1'){//启用RSA加密 __RSAEcrypt__.refreshRsaCode(function(){ getDynamicPasswordSync(params); }); }else{ getDynamicPasswordSync(params); } }; const getDynamicPasswordSync = (params) => { let {langid, success, failure} = params; const {openRSA} = params.loginSetting; let loginid = jQuery('#loginid').val(); let userpassword = jQuery('#userpassword').val(); let loginidRsa = loginid; let userpasswordRsa = userpassword; if(openRSA && openRSA=='1'){//启用RSA加密 loginidRsa = __RSAEcrypt__.rsa_data_encrypt(loginid) ; userpasswordRsa = __RSAEcrypt__.rsa_data_encrypt(userpassword); } WeaTools.callApi('/api/hrm/login/getDynamicPassword','POST',{ langid: langid, loginid: loginidRsa, userpassword: userpasswordRsa, }).then((result) => { if (result.status == '1') { if (success && typeof success == 'function') { success(result); } } else { message.destroy(); let errorMsg = result.message; // 返回错误信息提示 message.error(( {errorMsg} ), 5); } }); }; const showDialog = (title, url, style, callback, onCancel) => { style=style||{ width: 800, height: 465 }; let interval = setInterval(()=>{ let dialog = ecCom.WeaTools.createDialog({ moduleName: 'hrm', title, url, style, callback, onCancel,maxHeight:style.height }); if (dialog) { dialog.show(); clearInterval(interval); } },1000) }; const isdigit = (s) => { var r, re; re = /\d*/i; //\d表示数字,*表示匹配多个数字 r = s.match(re); return (r == s) ? true : false; } // 提供登录相关的全局方法 window.doLoginAction = (actionName, params) => { if (actionName == 'getLoginForm') { const { langid } = params; WeaLocaleProvider.getLocaleLabelByLang(['common', 'hrm'], langid).then(()=>{ getLoginForm(params); }); } else if (actionName == 'login') { //异步加载ras文件 loadjs.isDefined('rsa') ? loadjs.ready('rsa', ()=>{ window.loginPlugin.willLogin(params,login) //login(params) }) : loadjs(["/js/rsa/jsencrypt.js","/js/rsa/rsa.js"], 'rsa', { async: false, success: ()=>{ window.loginPlugin.willLogin(params,login) //login(params) } }); } else if (actionName == 'getDynamicPassword') { loadjs.isDefined('rsa') ? loadjs.ready('rsa', () => { getDynamicPassword(params); }) : loadjs(["/js/rsa/jsencrypt.js", "/js/rsa/rsa.js"], 'rsa', { async: false, success: () => { getDynamicPassword(params); } }); } else if(actionName == 'forgetPassword'){ const url = addContentPath(`/spa/hrm/index_mobx.html#/main/hrmSingle/forgetPassword?langid=${window.currLanguageId}`);//`/#/main/hrm/forgetPassword?langid=${window.currLanguageId}`;//`/spa/hrm/index_mobx.html#/main/hrm/forgetPassword?langid=${window.currLanguageId}` showDialog(getLabel('127899',"找回密码"), url, { width: 600, height: 245 }, data => { if(data){ const {status} = data; if(status == '1'){ message.success(data.message || getLabel(83551, '保存成功!')) }else{ message.error(data.message); } //解决登录页忘记密码保存成功后,不能输入账号和密码的问题。 setTimeout(() => { $(".fade-leave").css({display:"none"}) }) } }); } }; //window.doLoginAction('forgetPassword')