Commit 57ce78e9 authored by 徐乐's avatar 徐乐

perf: 修改

parent b9c76e1c
Pipeline #97115 passed with stages
......@@ -10,7 +10,6 @@ import { getUserInfo, getWebSiteConfig } from '@/api/service/base';
import { SERVICE_APP_LOGIN_MODE, SERVICE_INTERFACE_SUCCESS_CODE, WX_REDIRECT_URI } from '@/constants';
import store from '@/stores';
import { defaultApp } from '@/micro';
import CryptoJS from 'crypto-js';
import {
DEFAULT_MQTT_PATH,
......@@ -37,38 +36,21 @@ class Login {
// 单点登录_xule_20231214
const queryString = window.location.search.substring(1);
const params = queryString.split('&');
const paramsFind = params && params.find(function (a) { return a.split('=')[0] == 'uniwater_utoken'; });
const paramsFind =
params &&
params.find(function(a) {
return a.split('=')[0] == 'uniwater_utoken';
});
this.uniwater_utoken = paramsFind?.split('=')[1] ?? '';
// 单页面免登重定向地址
const redirect = params && params.find(function (a) { return a.split('=')[0] === 'redirect'; });
const redirect =
params &&
params.find(function(a) {
return a.split('=')[0] === 'redirect';
});
if (this.uniwater_utoken && !redirect) {
this.getTokenForThird();
}
//第三方免密登录,通过账号加密的方式,链接有效期30s_xule_20250427
const loginName = params && params.find(function (a) { return a.split('=')[0] === 'loginName'; })?.split('=')[1] || '';
if (loginName) {
const generateType = params && params.find(function (a) { return a.split('=')[0] === 'type'; })?.split('=')[1] || '';
const initiateTime = params && params.find(function (a) { return a.split('=')[0] === 'time'; })?.split('=')[1] || '';
const eiv = params && params.find(function (a) { return a.split('=')[0] === 'key'; })?.split('=')[1] || '';
let newTime = new Date().getTime() - initiateTime * 1;
if (generateType == 'pandaoa' && newTime > 0 && newTime < 30000 && eiv) {
const key = CryptoJS.PBKDF2(initiateTime, '', {
keySize: 256 / 32,
iterations: 100000
});
const iv = CryptoJS.enc.Hex.parse(eiv);
const decrypted = CryptoJS.AES.decrypt(loginName, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
const enLoginName = decrypted.toString(CryptoJS.enc.Utf8);
this.login(enLoginName, '', '', false, 'password', '', generateType);
return;
}
}
this.createContext = props.createContext;
this.history = props.history;
......@@ -170,8 +152,8 @@ class Login {
(response.token
? response.token
: response.access_token !== null && response.user_token !== null
? response.user_token
: '');
? response.user_token
: '');
if (token) {
const exp = 86400000;
self.globalConfig.token = token;
......@@ -373,7 +355,7 @@ class Login {
? this.globalConfig.userInfo.fullName
: '',
})
.catch(error => { });
.catch(error => {});
}
if (window.location.host === 'panda-water.com') {
......@@ -387,7 +369,7 @@ class Login {
? this.globalConfig.userInfo.fullName
: '',
})
.catch(error => { });
.catch(error => {});
}
}
......@@ -453,10 +435,10 @@ class Login {
!res || !res.data
? false
: _.isString(res.data)
? JSON.parse(res.data)
: typeof res.data === 'boolean'
? res.data
: false;
? JSON.parse(res.data)
: typeof res.data === 'boolean'
? res.data
: false;
self.globalConfig.hasGateWay = hasGateWay;
self.globalConfig.apiGatewayDomain = `${window.location.origin}${hasGateWay ? '/PandaCore/GateWay' : ''}`;
if (hasGateWay) {
......@@ -572,8 +554,9 @@ class Login {
mqttConfig.mqtt_mess.TcpPort = DEFAULT_TCP_PORT;
mqttConfig.mqtt_IsSSL = `${mqttConfig.mqtt_mess.TcpIP}:${mqttConfig.mqtt_mess.TcpPort}`;
}
mqttConfig.mqtt_iotIP = `${mqttConfig.mqtt_mess.TcpIP}:${mqttConfig.mqtt_mess.TcpPort ? mqttConfig.mqtt_mess.TcpPort : '443'
}`;
mqttConfig.mqtt_iotIP = `${mqttConfig.mqtt_mess.TcpIP}:${
mqttConfig.mqtt_mess.TcpPort ? mqttConfig.mqtt_mess.TcpPort : '443'
}`;
self.globalConfig = Object.assign(self.globalConfig, {
...mqttConfig,
});
......@@ -599,8 +582,8 @@ class Login {
const homepage = params.getParams('homepage')
? params.getParams('homepage')
: homeType && config.homepage
? `${homeType}/${params.getParams('homepage') || config.homepage}`
: '';
? `${homeType}/${params.getParams('homepage') || config.homepage}`
: '';
window.qiankunIsCache =
window.location.origin.replace(/^(http|https):\/\//, '') === 'panda-water.cn'
? false
......@@ -1028,7 +1011,7 @@ class Login {
height: '400',
});
const handleMessage = function (event) {
const handleMessage = function(event) {
const { origin } = event;
// Logger.log('origin', event.origin);
if (origin === 'https://login.dingtalk.com') {
......@@ -1231,15 +1214,15 @@ class Login {
if (industry) {
let userInfo =
self.globalConfig.userInfo &&
self.globalConfig.userInfo.Groups &&
self.globalConfig.userInfo.Groups instanceof Array
self.globalConfig.userInfo.Groups &&
self.globalConfig.userInfo.Groups instanceof Array
? self.globalConfig.userInfo.Groups.find(enter => {
if (toSite) {
return enter.site === toSite;
} else {
return enter.industry === industry;
}
})
if (toSite) {
return enter.site === toSite;
} else {
return enter.industry === industry;
}
})
: null;
if (industry === '熊猫新产品' && site) {
......@@ -1262,8 +1245,8 @@ class Login {
site: decodeURIComponent(decode(site)),
Groups:
self.globalConfig.userInfo &&
self.globalConfig.userInfo.Groups &&
self.globalConfig.userInfo.Groups instanceof Array
self.globalConfig.userInfo.Groups &&
self.globalConfig.userInfo.Groups instanceof Array
? self.globalConfig.userInfo.Groups
: null,
};
......@@ -1351,8 +1334,8 @@ class Login {
(response.token
? response.token
: response.access_token !== null && response.user_token !== null
? response.user_token
: '');
? response.user_token
: '');
if (token) {
const exp = 86400000;
self.globalConfig.token = token;
......@@ -1401,7 +1384,7 @@ class Login {
}
}
login(usr, pwd, userPhone, isRememberPWD, mode = SERVICE_APP_LOGIN_MODE.password, captcha, generateType) {
login(usr, pwd, userPhone, isRememberPWD, mode = SERVICE_APP_LOGIN_MODE.password, captcha) {
this.globalConfig = getGlobalConfig();
const self = this;
if (window.globalConfig && window.globalConfig.hasGateWay) {
......@@ -1416,7 +1399,7 @@ class Login {
: encipher(pwd, this.globalConfig.encrypt).toUpperCase()
: '',
type: mode,
generateType: params.getParams('generateType') || generateType || '',
generateType: params.getParams('generateType') || '',
vcode: captcha,
})
.then(res => {
......
......@@ -12,9 +12,10 @@ import { actionCreators } from '@/containers/App/store';
import { appService } from '@/api';
import LoginAction from './login';
import { defaultApp } from '../../../micro';
import CryptoJS from 'crypto-js';
const Login = forwardRef((props, _ref) => {
const history = useHistory();
const [action, setAction] = useState(() => new LoginAction(Object.assign({}, props, { history }), () => {}, false));
const [action, setAction] = useState(() => new LoginAction(Object.assign({}, props, { history }), () => { }, false));
const [jumpParam] = useState(() => {
const param = params
.getParams('jumpParam')
......@@ -42,6 +43,35 @@ const Login = forwardRef((props, _ref) => {
const authRes = hdtoken ? await appService.AuthHDUSer({ token: hdtoken, ignoreSite: true }) : '';
return authRes?.data || '';
};
const decryptName = () => {
//第三方免密登录,通过账号加密的方式,链接有效期30s_xule_20250427
const queryString = window.location.search.substring(1);
const ps = queryString.split('&');
const loginName = ps && ps.find(function (a) { return a.split('=')[0] === 'loginName'; })?.split('=')[1] || '';
if (loginName) {
const generateType = ps && ps.find(function (a) { return a.split('=')[0] === 'type'; })?.split('=')[1] || '';
const initiateTime = ps && ps.find(function (a) { return a.split('=')[0] === 'time'; })?.split('=')[1] || '';
const eiv = ps && ps.find(function (a) { return a.split('=')[0] === 'key'; })?.split('=')[1] || '';
let newTime = new Date().getTime() - initiateTime * 1;
if (generateType == 'pandaoa' && newTime > 0 && newTime < 30000 && eiv) {
const key = CryptoJS.PBKDF2(initiateTime, '', {
keySize: 256 / 32,
iterations: 100000
});
const iv = CryptoJS.enc.Hex.parse(eiv);
const decrypted = CryptoJS.AES.decrypt(loginName, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
const enLoginName = decrypted.toString(CryptoJS.enc.Utf8);
return enLoginName;
}
}
return '';
}
useEffect(async () => {
action.globalConfig = props.global;
// eslint-disable-next-line no-prototype-builtins
......@@ -54,13 +84,14 @@ const Login = forwardRef((props, _ref) => {
hasLogin.current = true;
window.hasLogin = true;
const authData = !token ? await getAuthDataInfo() : '';
const enLoginName = decryptName();
const isGZproject = window.globalConfig.subtitle === '广州节约用水管理系统';
if (window.globalConfig && window.globalConfig.hasGateWay && !isGZproject) {
appService
.authorizationToken({
loginName: token || authData,
loginName: token || authData || enLoginName,
type: 'token',
generateType: params.getParams('generateType') || '',
generateType: params.getParams('generateType') || (enLoginName ? 'pandaoa' : ''),
})
.then(res => {
if (res.code === 0) {
......@@ -112,7 +143,7 @@ const Login = forwardRef((props, _ref) => {
: '';
const param = JSON.parse(jumpParam);
if (param) window.sessionStorage.setItem('routerParams', JSON.stringify(param));
} catch (error) {}
} catch (error) { }
// props.history.push('/' + params.getParams('redirect'))
props.history.push(`/?client=${props.global.client}`);
// window.share.event.emit('triggerMicro', props.global);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment