Commit 857efe18 by 展昭

添加app_register_id逻辑

parent af8a8dd8
...@@ -56,7 +56,8 @@ const api = { ...@@ -56,7 +56,8 @@ const api = {
}; };
function defineHeader() { function defineHeader() {
const token = store.state.oidc.access_token; //const token = store.state.oidc.access_token;
const token=store.getters.getToken;
headers.Authorization = "Bearer " + token; headers.Authorization = "Bearer " + token;
return Promise.resolve(headers); return Promise.resolve(headers);
} }
......
...@@ -16,7 +16,7 @@ Vue.prototype.globalNavLeftArrowClick = function (callback) { ...@@ -16,7 +16,7 @@ Vue.prototype.globalNavLeftArrowClick = function (callback) {
new Vue({ new Vue({
router,
store, store,
router,
render: h => h(App) render: h => h(App)
}).$mount('#app') }).$mount('#app')
...@@ -4,7 +4,6 @@ import moreRouters from './more-router.js' ...@@ -4,7 +4,6 @@ import moreRouters from './more-router.js'
import billRouters from './bill-router.js' import billRouters from './bill-router.js'
import { vuexOidcCreateRouterMiddleware } from 'vuex-oidc' import { vuexOidcCreateRouterMiddleware } from 'vuex-oidc'
import store from '../store' import store from '../store'
import Mgr from "../assets/js/SecurityService"
Vue.use(VueRouter) Vue.use(VueRouter)
...@@ -30,58 +29,8 @@ const router = new VueRouter({ ...@@ -30,58 +29,8 @@ const router = new VueRouter({
} }
}) })
const mgr = new Mgr();
function loginByAuthcode(authCode) {
let loginArgs = { extraQueryParams: { authcode: authCode } };
mgr.signIn(loginArgs);
}
function autoLogin(comid, authcode, next) {
localStorage.setItem("comid", comid);
mgr.getUser().then(user => {
if (user == null) {
loginByAuthcode(authcode);
} else {
let companyId = localStorage.getItem("companyId");
if (comid != companyId) {
//如果已经登录,则先退出
localStorage.setItem("authcode", authcode);
mgr.signOut();
} else {
next();
}
}
})
}
router.beforeEach(vuexOidcCreateRouterMiddleware(store)); router.beforeEach(vuexOidcCreateRouterMiddleware(store));
// router.beforeEach((to, from, next) => { //TODO: 把callBack中的app_register_id逻辑替换到这里
// let authcode = localStorage.getItem("authcode")
// if (authcode) {
// localStorage.removeItem("authcode");
// loginByAuthcode(authcode)
// }
// else {
// authcode = to.query.authcode;
// const comid = to.query.comId || to.query.comid;
// if (comid && authcode) {
// localStorage.setItem("autoCallback", to.path);
// autoLogin(comid, authcode, next);
// } else {
// mgr.getUser().then(user => {
// if (user == null) {
// mgr.signIn();
// } else {
// next()
// }
// });
// }
// }
// });
export default router export default router
import types from "../types";
let usermemberId = '206484' let usermemberId = '206484'
let token = ''
const state = { usermemberId, token }
const getters = {
getToken(state) {
state.token = localStorage.getItem("token");
return state.token;
},
}
const mutations = {
[types.CHANGE_TOKEN](state, token) {
state.token = token;
try {
localStorage.setItem("token", token);
} catch (error) { }
},
}
const state = { usermemberId } const actions = {
changeToken({ commit }, token) {
commit(types.CHANGE_TOKEN, token);
}
}
export default { export default {
state state,
getters,
mutations,
actions
} }
\ No newline at end of file
...@@ -155,7 +155,7 @@ ...@@ -155,7 +155,7 @@
</template> </template>
<script> <script>
//TODO: 根据当前时间显示日期
import { Icon, Loading } from "vant"; import { Icon, Loading } from "vant";
import { TabHeader } from "@/components"; import { TabHeader } from "@/components";
import * as utils from "../../utils/common"; import * as utils from "../../utils/common";
......
...@@ -77,7 +77,6 @@ export default { ...@@ -77,7 +77,6 @@ export default {
pageSize: "10" pageSize: "10"
}).then( }).then(
resdata => { resdata => {
let arr = resdata.list; let arr = resdata.list;
// 如果是第一页需手动制空列表 // 如果是第一页需手动制空列表
if (page.num === 1) this.dataList = []; if (page.num === 1) this.dataList = [];
......
<template> <template>
<div> <div></div>
</div>
</template> </template>
<script> <script>
import { mapActions } from 'vuex' import { mapActions } from "vuex";
import { GetCommonPms } from "../assets/js/CommonPms.js";
import qs from "qs";
import axios from "axios";
import common from "../utils/common.js";
import store from "../store";
const oidc_config = JSON.parse(process.env.VUE_APP_OIDC_CONFIG);
export default { export default {
name: 'OidcCallback', name: "OidcCallback",
methods: { methods: {
...mapActions([ ...mapActions(["oidcSignInCallback", "getOidcUser"]),
'oidcSignInCallback' getQueryString(urlsearch, name) {
]) var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = urlsearch.match(reg);
if (r != null) return unescape(r[2]);
return null;
},
async getToken(access_token, appid, redirectPath) {
let pms = {
client_id: oidc_config.client_id,
client_secret: oidc_config.client_secret,
grant_type: "application",
scope:
"workapps.client openid api.workapps.user api.workapps.org api.workapps.open",
app_register_id: appid,
token: access_token
};
let commonPms = GetCommonPms();
let url = `${oidc_config.authority}/connect/token?${commonPms}`;
console.log("url=", url);
await axios
.post(url, qs.stringify(pms))
.then(
res => {
console.log("res=", res);
if (res.status == 200) {
const accessToken = res.data.access_token;
//store.dispatch("changeToken", accessToken);
localStorage.setItem("token", accessToken);
this.$router.push(redirectPath);
}
},
err => {
console.log("err=", err);
}
)
.catch(err => {
console.log("err=", err);
this.$router.push("/oidc-callback-error"); // Handle errors any way you want
});
}
}, },
mounted () { mounted() {
this.oidcSignInCallback() this.oidcSignInCallback()
.then((redirectPath) => { .then(redirectPath => {
this.$router.push(redirectPath) this.getOidcUser()
}) .then(res => {
.catch((err) => { let urlsearch = redirectPath.split("?")[1];
console.error(err) let appid = this.getQueryString(urlsearch, "appid");
this.$router.push('/oidc-callback-error') // Handle errors any way you want console.log("appid=", appid);
this.getToken(res.access_token, appid, redirectPath);
})
.catch(err => {
console.log("err=", err);
});
//this.$router.push(redirectPath);
}) })
.catch(err => {
console.error(err);
this.$router.push("/oidc-callback-error"); // Handle errors any way you want
});
} }
} };
</script> </script>
\ No newline at end of file
...@@ -9,13 +9,14 @@ ...@@ -9,13 +9,14 @@
<div v-else></div> <div v-else></div>
<div class="btn" @click="getOidcUserMy">getOidcUser</div> <div class="btn" @click="getOidcUserMy">getOidcUser</div>
<div class="btn" @click="authenticateOidcSilent">authenticateOidcSilent</div> <div class="btn" @click="authenticateOidcSilent">authenticateOidcSilent</div>
<div class="btn" @click="signOutOidc">signOut</div>
</div> </div>
</template> </template>
<script> <script>
import { TabHeader } from "@/components"; import { TabHeader } from "@/components";
import { mapGetters, mapActions } from "vuex"; import { mapGetters, mapActions } from "vuex";
import store from "@/store" import store from "@/store";
export default { export default {
components: { components: {
TabHeader TabHeader
...@@ -30,28 +31,37 @@ export default { ...@@ -30,28 +31,37 @@ export default {
"oidcIdTokenExp", "oidcIdTokenExp",
"oidcAuthenticationIsChecked", "oidcAuthenticationIsChecked",
"oidcError" "oidcError"
]), ])
hasAccess: function() { // hasAccess: function() {
return this.oidcIsAuthenticated || this.$route.meta.isPublic; // return this.oidcIsAuthenticated || this.$route.meta.isPublic;
} // }
},
mounted() {
this.oidcCheckAccess(this.$route).then(res => {
console.log("res=", res);
});
}, },
methods: { methods: {
...mapActions([ ...mapActions([
"oidcCheckAccess",
"authenticateOidc", // Authenticates with redirect to sign in if not signed in "authenticateOidc", // Authenticates with redirect to sign in if not signed in
"oidcSignInCallback", // Handles callback from authentication redirect. Has an optional url parameter "oidcSignInCallback", // Handles callback from authentication redirect. Has an optional url parameter
"authenticateOidcSilent", // Authenticates if signed in. No redirect is made if not signed in "authenticateOidcSilent", // Authenticates if signed in. No redirect is made if not signed in
"getOidcUser", // Get user from oidc-client storage and update it in vuex store. Returns a promise "getOidcUser", // Get user from oidc-client storage and update it in vuex store. Returns a promise
"signOutOidc", // Signs out user in open id provider "signOutOidc", // Signs out user in open id provider
"removeOidcUser" // Signs out user in vuex and browser storage, but not in open id provider "removeOidcUser", // Signs out user in vuex and browser storage, but not in open id provider
"addOidcEventListener"
]), ]),
getOidcUserMy() { getOidcUserMy() {
console.log('store=',store); this.getOidcUser()
this.getOidcUser().then(res => { .then(res => {
console.log("res=", JSON.stringify(res)); console.log("res=", JSON.stringify(res));
}); })
.catch(err => {
console.log("err=", err);
});
// const token=this.oidcAccessToken; // const token=this.oidcAccessToken;
// console.log('token=',token); // console.log('token=',token);
} }
}, },
data() { data() {
......
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