UNPKG

signin-isc

Version:

isc登录

75 lines (72 loc) 2.89 kB
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) => {}) }