Merge remote-tracking branch 'origin/feature-yaojie' into feature-guji
This commit is contained in:
commit
240cafe11d
@ -18,9 +18,10 @@ export function login(data) {
|
|||||||
export function getInfo(token) {
|
export function getInfo(token) {
|
||||||
return request({
|
return request({
|
||||||
url: '/user/profile/get',
|
url: '/user/profile/get',
|
||||||
method: 'post',
|
method: 'get',
|
||||||
params: {token},
|
// params: {token},
|
||||||
headers: {
|
headers: {
|
||||||
|
'Authorization':'Bearer '+token,
|
||||||
'Timestamp': getCurrentTimestamp()
|
'Timestamp': getCurrentTimestamp()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -31,8 +32,8 @@ export function logout(token) {
|
|||||||
return request({
|
return request({
|
||||||
url: '/auth/logout',
|
url: '/auth/logout',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: { token },
|
|
||||||
headers: {
|
headers: {
|
||||||
|
'Authorization':'Bearer '+token,
|
||||||
'Timestamp': getCurrentTimestamp()
|
'Timestamp': getCurrentTimestamp()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -62,6 +62,7 @@ import Search from '@/components/HeaderSearch';
|
|||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import { CaretBottom } from '@element-plus/icons-vue';
|
import { CaretBottom } from '@element-plus/icons-vue';
|
||||||
|
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components: {
|
components: {
|
||||||
Breadcrumb,
|
Breadcrumb,
|
||||||
@ -86,6 +87,8 @@ export default defineComponent({
|
|||||||
store.app().toggleSidebar();
|
store.app().toggleSidebar();
|
||||||
},
|
},
|
||||||
async logout() {
|
async logout() {
|
||||||
|
console.log('5989569898')
|
||||||
|
// store.user().login()
|
||||||
await store.user().logout();
|
await store.user().logout();
|
||||||
this.$router.push(`/login?redirect=${this.$route.fullPath}`);
|
this.$router.push(`/login?redirect=${this.$route.fullPath}`);
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ NProgress.configure({ showSpinner: false }); // NProgress Configuration
|
|||||||
|
|
||||||
const whiteList = ['/login', '/auth-redirect']; // no redirect whitelist
|
const whiteList = ['/login', '/auth-redirect']; // no redirect whitelist
|
||||||
|
|
||||||
|
//每次路由变动,都会调用这个路由守卫
|
||||||
router.beforeEach(async (to, from, next) => {
|
router.beforeEach(async (to, from, next) => {
|
||||||
console.log('router.beforeEach', to.path, from.path);
|
console.log('router.beforeEach', to.path, from.path);
|
||||||
// start progress bar
|
// start progress bar
|
||||||
@ -21,31 +22,42 @@ router.beforeEach(async (to, from, next) => {
|
|||||||
// determine whether the user has logged in
|
// determine whether the user has logged in
|
||||||
const hasToken = getToken();
|
const hasToken = getToken();
|
||||||
console.log('88888',hasToken)
|
console.log('88888',hasToken)
|
||||||
|
|
||||||
if (hasToken) {
|
if (hasToken) {
|
||||||
|
//有token
|
||||||
|
// 且前往登录
|
||||||
if (to.path === '/login') {
|
if (to.path === '/login') {
|
||||||
// if is logged in, redirect to the home page
|
// if is logged in, redirect to the home page
|
||||||
NProgress.done(); // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939
|
NProgress.done(); // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939
|
||||||
next({ path: '/' });
|
next({ path: '/' });
|
||||||
} else {
|
} else {
|
||||||
|
// 有token,但是不去登录
|
||||||
// determine whether the user has obtained his permission roles through getInfo
|
// determine whether the user has obtained his permission roles through getInfo
|
||||||
// const hasRoles = userStore().roles && userStore().roles.length > 0;
|
// const hasRoles = userStore().roles && userStore().roles.length > 0;
|
||||||
const hasRoles = true;
|
const hasRoles = true;
|
||||||
|
|
||||||
// console.log('hasRoles=', hasRoles);
|
// console.log('hasRoles=', hasRoles);
|
||||||
|
// 如果用角色
|
||||||
if (hasRoles) {
|
if (hasRoles) {
|
||||||
|
// 继续执行
|
||||||
|
const accessRoutes = await permissionStore().generateRoutes(['admin']);
|
||||||
|
accessRoutes.forEach(item => {
|
||||||
|
router.addRoute(item);
|
||||||
|
});
|
||||||
next();
|
next();
|
||||||
} else {
|
} else {
|
||||||
|
// 没有角色
|
||||||
try {
|
try {
|
||||||
// get user info
|
// get user info
|
||||||
// note: roles must be a object array! such as: ['admin'] or ,['developer','editor']
|
// note: roles must be a object array! such as: ['admin'] or ,['developer','editor']
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
const infoRes = await userStore().getInfo() as any;
|
const infoRes = await userStore().getInfo() as any; //获取角色,调用查询个人信息的接口
|
||||||
console.log('permissionuserinfor:',infoRes)
|
console.log('permissionuserinfor:',infoRes)
|
||||||
let roles = [];
|
let roles:any = [];
|
||||||
if (infoRes.roles) {
|
if (infoRes.roles) {
|
||||||
roles = infoRes.roles;
|
roles = infoRes.roles;
|
||||||
}
|
}
|
||||||
|
roles = ['admin']
|
||||||
// generate accessible routes map based on roles
|
// generate accessible routes map based on roles
|
||||||
const accessRoutes = await permissionStore().generateRoutes(roles);
|
const accessRoutes = await permissionStore().generateRoutes(roles);
|
||||||
// console.log('accessRoutes=', accessRoutes)
|
// console.log('accessRoutes=', accessRoutes)
|
||||||
@ -71,6 +83,7 @@ router.beforeEach(async (to, from, next) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// 没有token
|
||||||
/* has no token*/
|
/* has no token*/
|
||||||
if (whiteList.indexOf(to.path) !== -1) {
|
if (whiteList.indexOf(to.path) !== -1) {
|
||||||
// in the free login whitelist, go directly
|
// in the free login whitelist, go directly
|
||||||
|
@ -55,10 +55,15 @@ export default defineStore({
|
|||||||
this.routes = constantRoutes.concat(routes);
|
this.routes = constantRoutes.concat(routes);
|
||||||
},
|
},
|
||||||
generateRoutes(roles: string[]) {
|
generateRoutes(roles: string[]) {
|
||||||
|
console.log("asdasd")
|
||||||
let accessedRoutes;
|
let accessedRoutes;
|
||||||
if (roles.includes('teacher_user')) {
|
if (roles.includes('admin')) {
|
||||||
|
console.log("123")
|
||||||
|
|
||||||
accessedRoutes = asyncRoutes || [];
|
accessedRoutes = asyncRoutes || [];
|
||||||
} else {
|
} else {
|
||||||
|
console.log("456")
|
||||||
|
|
||||||
accessedRoutes = filterAsyncRoutes(asyncRoutes, roles);
|
accessedRoutes = filterAsyncRoutes(asyncRoutes, roles);
|
||||||
}
|
}
|
||||||
this.setRoutes(accessedRoutes);
|
this.setRoutes(accessedRoutes);
|
||||||
|
@ -57,6 +57,7 @@ export default defineStore({
|
|||||||
const { data } = response;
|
const { data } = response;
|
||||||
this.token = data.token;
|
this.token = data.token;
|
||||||
setToken(data.token);
|
setToken(data.token);
|
||||||
|
console.log("token", this.token)
|
||||||
router.push('/')
|
router.push('/')
|
||||||
resolve();
|
resolve();
|
||||||
console.log('2222',response)
|
console.log('2222',response)
|
||||||
@ -76,11 +77,11 @@ export default defineStore({
|
|||||||
if (!data) {
|
if (!data) {
|
||||||
reject('Verification failed, please Login again.');
|
reject('Verification failed, please Login again.');
|
||||||
}
|
}
|
||||||
const { id,username,address,phone,email,age,signature,avatar,nickname,sex,description,roles } = data;
|
const { id,username,address,phone,email,age,signature,avatar,nickname,sex,description } = data;
|
||||||
// roles must be a non-empty array
|
// roles must be a non-empty array
|
||||||
if (!roles || roles.length <= 0) {
|
// if (!roles || roles.length <= 0) {
|
||||||
reject('getInfo: roles must be a non-null array!');
|
// reject('getInfo: roles must be a non-null array!');
|
||||||
}
|
// }
|
||||||
this.id = id;
|
this.id = id;
|
||||||
// this.roles = roles;
|
// this.roles = roles;
|
||||||
// this.roles =['admin'];
|
// this.roles =['admin'];
|
||||||
@ -103,17 +104,17 @@ export default defineStore({
|
|||||||
|
|
||||||
// user logout
|
// user logout
|
||||||
logout():Promise<void> {
|
logout():Promise<void> {
|
||||||
|
console.log("token",this.token)
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
apiLogout(this.token).then(() => {
|
apiLogout(this.token).then(() => {
|
||||||
this.token = '';
|
this.token = '';
|
||||||
this.roles = [];
|
this.roles = [];
|
||||||
|
console.log('退出',this.token)
|
||||||
removeToken();
|
removeToken();
|
||||||
resetRouter();
|
resetRouter();
|
||||||
|
|
||||||
// reset visited views and cached views
|
// reset visited views and cached views
|
||||||
// to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485
|
// to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485
|
||||||
tagsViewStore().delAllViews();
|
tagsViewStore().delAllViews();
|
||||||
|
|
||||||
resolve();
|
resolve();
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
reject(error);
|
reject(error);
|
||||||
@ -137,11 +138,11 @@ export default defineStore({
|
|||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
const infoRes = await this.getInfo() as any;
|
const infoRes = await this.getInfo() as any;
|
||||||
let roles = [];
|
let roles : any[] = [];
|
||||||
if (infoRes.roles) {
|
if (infoRes.roles) {
|
||||||
roles = infoRes.roles;
|
roles = infoRes.roles;
|
||||||
}
|
}
|
||||||
|
roles = ['admin']
|
||||||
resetRouter();
|
resetRouter();
|
||||||
|
|
||||||
// generate accessible routes map based on roles
|
// generate accessible routes map based on roles
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import store from '@/store';
|
import store from '@/store';
|
||||||
import { getToken } from '@/utils/auth';
|
import {getToken, removeToken} from '@/utils/auth';
|
||||||
|
|
||||||
const BaseURL ='https://nbxt.oa.x-lf.cn'
|
const BaseURL ='https://nbxt.oa.x-lf.cn'
|
||||||
// create an axios instance
|
// create an axios instance
|
||||||
@ -50,7 +50,8 @@ service.interceptors.response.use(
|
|||||||
*/
|
*/
|
||||||
response => {
|
response => {
|
||||||
const res = response.data;
|
const res = response.data;
|
||||||
console.log('999999',res)
|
// console.log("removeToken:",removeToken())
|
||||||
|
console.log('999999',response)
|
||||||
// if the custom code is not 20000, it is judged as an error.
|
// if the custom code is not 20000, it is judged as an error.
|
||||||
if (res.code !== 20000 && res.code !== 200) {
|
if (res.code !== 20000 && res.code !== 200) {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
|
@ -32,7 +32,7 @@ export default defineComponent({
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.fetchData();
|
// this.fetchData();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
statusFilter(status) {
|
statusFilter(status) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user