Commit f8876c7b by 展昭

update

parent 44b30d93
...@@ -16,5 +16,10 @@ export default { ...@@ -16,5 +16,10 @@ export default {
async getPayUrl() { async getPayUrl() {
const url = urls.getPayUrlUrl(); const url = urls.getPayUrlUrl();
return AjaxRequest.get(url); return AjaxRequest.get(url);
},
async getAccessToken(authcode) {
const url = urls.getAccessTokenUrl(authcode);
return AjaxRequest.get(url);
} }
}; };
...@@ -12,5 +12,9 @@ export default { ...@@ -12,5 +12,9 @@ export default {
getPayUrlUrl() { getPayUrlUrl() {
let url = VUE_APP_API_BASEURL + 'api/common/pay/getPaymentUrl'; let url = VUE_APP_API_BASEURL + 'api/common/pay/getPaymentUrl';
return url; return url;
},
getAccessTokenUrl(authcode) {
let url = '';
return url;
} }
}; };
...@@ -4,9 +4,13 @@ import { vuexOidcCreateRouterMiddleware } from 'vuex-oidc' ...@@ -4,9 +4,13 @@ import { vuexOidcCreateRouterMiddleware } from 'vuex-oidc'
import store from '../store' import store from '../store'
import billRouters from './bill-router.js' import billRouters from './bill-router.js'
import moreRouters from './more-router.js' import moreRouters from './more-router.js'
import api from '../api/More'
import qs from "qs";
import axios from "axios";
Vue.use(VueRouter) const oidc_config = JSON.parse(process.env.VUE_APP_OIDC_CONFIG);
Vue.use(VueRouter)
const router = new VueRouter({ const router = new VueRouter({
mode: 'history', mode: 'history',
...@@ -29,90 +33,72 @@ const router = new VueRouter({ ...@@ -29,90 +33,72 @@ const router = new VueRouter({
} }
}) })
//自动登录 function getAccessToken(authCode) {
function autoLogin(payload = { autoCode, redirectPath }) { return new Promise((resolve, reject) => {
store.dispatch("authenticateOidc", { api.getAccessToken(authCode)
options: { .then(res => {
extraQueryParams: { if (res && res.status) {
authcode: payload.autoCode accessToken = res.data.accessToken;
}, resolve(accessToken);
redirectPath: payload.redirectPath
} }
else {
reject(res)
}
});
}); });
} }
const loginStorage = localStorage; async function getToken(access_token, appid, next) {
const autoLoginParamsKey = "autoLoginParams"; let pms = {
function setAutoLogin(payload = { autoCode, redirectPath }) { client_id: oidc_config.client_id,
loginStorage.setItem(autoLoginParamsKey, JSON.stringify(payload)) client_secret: oidc_config.client_secret,
} grant_type: "application",
function getAutoLoginParams() { scope:
const paramStr = loginStorage.getItem(autoLoginParamsKey); "workapps.client openid api.workapps.user api.workapps.org api.workapps.open",
if (!!paramStr) { app_register_id: appid,
loginStorage.removeItem(autoLoginParamsKey); token: access_token
return JSON.parse(paramStr); };
let commonPms = GetCommonPms();
let url = `${oidc_config.authority}/connect/token?${commonPms}`;
await axios
.post(url, qs.stringify(pms))
.then(
res => {
if (res.status == 200) {
const accessToken = res.data.access_token;
localStorage.setItem("token", accessToken);
next()
}
},
err => {
this.errMessage = err.response.data.error_description;
} }
return null; )
.catch(err => {
console.log("456err=", err);
});
} }
//如果有登录参数则优先登录
router.beforeEach((to, from, next) => {
const autoLoginParams = getAutoLoginParams();
if (autoLoginParams) {
autoLogin(autoLoginParams);
} else {
next();
}
})
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
const authcode = to.query.authCode || to.query.authcode; const authcode = to.query.authCode || to.query.authcode;
const appid = to.query.appId || to.query.appid; const appid = to.query.appId || to.query.appid;
const userId = to.query.userid || to.query.userId||0;
if (!!authcode && !!appid) { if (!!authcode && !!appid) {
var toPath = to.path || "/"; getAccessToken(authcode).then(res => {
for (let key in to.query) { const token = res;
if (key == 'authcode'||key == 'authCode') { getToken(token, appid, next);
continue; }).catch(err => {
} console.log('err=', err);
toPath += toPath.indexOf("?") > -1 ? "&" : "?"; })
toPath += `${key}=${to.query[key]}`;
}
const storeAppId = localStorage.getItem('appid');
store.dispatch("getOidcUser").then(oidcUser => {
if (oidcUser) {
if(storeAppId!= appid){
localStorage.setItem('appid',appid);
setAutoLogin({ autoCode: authcode, redirectPath: toPath })
store.dispatch("signOutOidc")
}else{
//如果登录用户与当前登录用户不匹配,则保存登录参数,退出
console.log('userId=',userId);
console.log('oidcUser.profile.sub=',oidcUser.profile.sub);
console.log('oidcUser.profile.sub==userId:',oidcUser.profile.sub==userId);
if (userId > 0 && oidcUser.profile.sub != userId) {
setAutoLogin({ autoCode: authcode, redirectPath: toPath })
store.dispatch("signOutOidc")
} else {
next()
}
}
} else {
localStorage.setItem('appid',appid);
autoLogin({ autoCode: authcode, redirectPath: toPath })
}
}).catch(() => {
localStorage.setItem('appid',appid);
autoLogin({ autoCode: authcode, redirectPath: toPath })
});
} else { } else {
next() next()
} }
}) })
router.beforeEach(vuexOidcCreateRouterMiddleware(store)); router.beforeEach(vuexOidcCreateRouterMiddleware(store));
export default router export default router
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment