Files
kh-device-admin/jero-web/src/cas/sso.js
T

77 lines
1.8 KiB
Java

import Vue from 'vue'
import { ACCESS_TOKEN } from '@/store/mutation-types'
import store from '@/store'
/**
* 单点登录
*/
const init = (callback) => {
if (process.env.VUE_APP_SSO == 'true') {
console.log('-------单点登录开始-------')
const token = Vue.ls.get(ACCESS_TOKEN)
const st = getUrlParam('ticket')
const sevice = 'http://' + window.location.host + '/'
if (token) {
loginSuccess(callback)
} else {
if (st) {
validateSt(st, sevice, callback)
} else {
const serviceUrl = encodeURIComponent(sevice)
window.location.href = window._CONFIG.casPrefixUrl + '/login?service=' + serviceUrl
}
}
console.log('-------单点登录结束-------')
} else {
callback && callback()
}
}
const SSO = {
init: init
}
function getUrlParam (paraName) {
const url = document.location.toString()
const arrObj = url.split('?')
if (arrObj.length > 1) {
const arrPara = arrObj[1].split('&')
let arr
for (let i = 0; i < arrPara.length; i++) {
arr = arrPara[i].split('=')
if (arr != null && arr[0] == paraName) {
return arr[1]
}
}
return ''
} else {
return ''
}
}
function validateSt (ticket, service, callback) {
const params = {
ticket: ticket,
service: service
}
store.dispatch('ValidateLogin', params).then(res => {
// this.departConfirm(res)
if (res.success) {
loginSuccess(callback)
} else {
const sevice = 'http://' + window.location.host + '/'
const serviceUrl = encodeURIComponent(sevice)
window.location.href = window._CONFIG.casPrefixUrl + '/login?service=' + serviceUrl
}
}).catch((err) => {
console.log(err)
// that.requestFailed(err);
})
}
function loginSuccess (callback) {
callback()
}
export default SSO