You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

115 lines
3.1 KiB

import { parse } from 'query-string';
import Cookies from 'js-cookie';
import 'whatwg-fetch';
//单点登录地址
const LOGIN_URLS = {
//测试内网
'http://10.3.0.33:8080':
'https://10.1.13.53:7002/casserver/login?service=http://10.3.0.33:8080/web/auth/',
//测试外网
'https://safeliab-test.ccic-net.com.cn':
'https://ssotest.ccic-net.com.cn/casserver/login?service=https://safeliab-test.ccic-net.com.cn/web/auth/',
//正式内网
'http://safeliab.cloud.ccic-net.com.cn':
'https://app.ccic-net.com.cn:27051/casserver/login?service=http://safeliab.cloud.ccic-net.com.cn/web/auth/',
//正式外网
'https://safeliab.ccic-net.com.cn':
'https://sso.ccic-net.com.cn/casserver/login?service=https://safeliab.ccic-net.com.cn/web/auth/',
};
//登出地址
const LOGOUT_URLS = {
//测试内网
'http://10.3.0.33:8080':
'https://10.1.13.53:7002/casserver/logout?service=http://10.3.0.33:8080/web/auth/',
//测试外网
'https://safeliab-test.ccic-net.com.cn':
'https://ssotest.ccic-net.com.cn/casserver/logout?service=https://safeliab-test.ccic-net.com.cn/web/auth/',
//正式内网
'http://safeliab.cloud.ccic-net.com.cn':
'https://app.ccic-net.com.cn:27051/casserver/logout?service=http://safeliab.cloud.ccic-net.com.cn/web/auth/',
//正式外网
'https://safeliab.ccic-net.com.cn':
'https://sso.ccic-net.com.cn/casserver/logout?service=https://safeliab.ccic-net.com.cn/web/auth/',
};
window.onload = function () {
const loca = window.location;
const origin = loca.origin;
const search = loca.search;
const SERVICE_NAME = origin + '/web/auth/';
const LOGIN_URL = LOGIN_URLS[origin];
const LOGOUT_URL = LOGOUT_URLS[origin];
const ROOT_URL = '/web/';
const params = parse(search);
const ticket = params.ticket;
const logoutType = params.logoutType;
function logoutOut() {
Cookies.remove('insure-token', { path: '/' });
Cookies.remove('expert-token', { path: '/' });
Cookies.remove('enterprise-token', { path: '/' });
window.localStorage.clear();
const loca = window.location;
loca.replace(LOGOUT_URL);
}
function checkStatus(response) {
if (response.status >= 200 && response.status < 300) {
return response;
} else {
var error = new Error(response.statusText);
error.response = response;
throw error;
}
}
function parseJSON(response) {
return response.json();
}
if (logoutType === 'manual') {
logoutOut();
return;
}
if (ticket) {
window
.fetch(
'/base/singleLogin/auth?ticket=' + ticket + '&service=' + SERVICE_NAME,
)
.then(checkStatus)
.then(parseJSON)
.then(
(result) => {
if (result.code == 0 && result.success) {
if (result.data.token && result.data.userType) {
var keys = {
1: 'enterprise',
3: 'insure',
5: 'expert',
};
Cookies.set(
keys[result.data.userType] + '-token',
result.data.token,
{ expires: 1, path: '/' },
);
window.location.href =
ROOT_URL + keys[result.data.userType] + '/app';
} else {
logoutOut();
}
} else {
logoutOut();
}
},
() => {
logoutOut();
},
);
} else {
window.location.href = LOGIN_URL;
}
};