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
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; |
|
} |
|
};
|
|
|