signin-isc
Version:
isc登录
75 lines (72 loc) • 2.89 kB
JavaScript
import axios from 'axios';
import qs from 'qs';
import storeLocal from 'storejs'
import {ridUrlParam, GetQueryValue} from './src/url';
const BASE64 = require('./src/base64');
let iscLoginUrl = 'https://isc.sgcc.com.cn:22022/isc_sso/login', //默认isc登录地址
iscLogoutUrl = 'https://isc.sgcc.com.cn:22022/isc_sso/logout', //默认isc退出地址
systemUrl = location.origin, //默认系统地址
ticket = GetQueryValue('ticket'), //isc登录成功了ticket的值
oauth = storeLocal('oauth');
/**
* 参数说明
* authorization 应用appId和应用secret 如 appId:secret
* token 用于判断是否登录
* isc isc登录地址
* system 当前系统地址
*/
export function SigninIsc(authorization, login, system) {
let newUrl = (login ? login : iscLoginUrl) + '?service=' + (system ? system : ridUrlParam(systemUrl, ['ticket']));
return new Promise((resolve, reject) => {
if(ticket) {
axios({
method: 'post',
url: `/lbcloud-oauth/oauth/token`,
data: qs.stringify({
grant_type: 'isc',
scope: 'all',
service: ridUrlParam(systemUrl, ['ticket']),
ticket,
}),
headers: {
'Content-Type':"application/x-www-form-urlencoded",
'Tenant-Id': '000000',
'Authorization': `Basic ${BASE64.encode(authorization)}`,
}
}).then(res=> {
resolve(res)
if(res.data.code) {
if(res.data.code=='50027') {
window.location.href = newUrl;
}
}else {
const ExpiresTime = new Date().getTime() + res.data.expires_in * 1000;
storeLocal.set('oauth', res.data);
storeLocal.set('expires_in', ExpiresTime);
window.location.href = ridUrlParam(systemUrl, ['ticket'])
}
}).catch((e) => {
reject(e)
})
}else {
window.location.href = newUrl;
}
})
}
export function LoginOutIsc(logout) {
let newUrl = (logout ? logout : iscLogoutUrl) + '?service=' + systemUrl;
axios({
method: 'post',
url: `/lbcloud-oauth/oauth/logout`,
headers: {
'Content-Type': 'application/json;charset=UTF-8',
'Tenant-Id': '000000',
'Authorization': `Bearer ${oauth.access_token}`,
}
}).then(res=> {
if(res.data.code==200) {
storeLocal.clear();
window.location.href = newUrl;
}
}).catch((e) => {})
}