54 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			54 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								import NProgress from 'nprogress'; // progress bar
							 | 
						||
| 
								 | 
							
								import 'nprogress/nprogress.css'; // progress bar style
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import store from '@/store';
							 | 
						||
| 
								 | 
							
								import router from '@/router';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NProgress.configure({ showSpinner: false });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const whiteListRouters = store.getters['permission/whiteListRouters'];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								router.beforeEach(async (to, from, next) => {
							 | 
						||
| 
								 | 
							
								  NProgress.start();
							 | 
						||
| 
								 | 
							
								  document.title = '智慧云商协-'+to.meta.title;
							 | 
						||
| 
								 | 
							
								  const token = localStorage.getItem('associationToken');
							 | 
						||
| 
								 | 
							
								  console.log(token);
							 | 
						||
| 
								 | 
							
								  console.log(to.path);
							 | 
						||
| 
								 | 
							
								  if (token) {
							 | 
						||
| 
								 | 
							
								    if (to.path === '/login') {
							 | 
						||
| 
								 | 
							
								      next();
							 | 
						||
| 
								 | 
							
								      return;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const roles = store.getters['user/roles'];
							 | 
						||
| 
								 | 
							
								    console.log(roles);
							 | 
						||
| 
								 | 
							
								    if (roles && roles.length > 0) {
							 | 
						||
| 
								 | 
							
								      next();
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      try {
							 | 
						||
| 
								 | 
							
								        await store.dispatch('user/getUserInfo');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        await store.dispatch('permission/initRoutes', store.getters['user/roles']);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        next({ ...to });
							 | 
						||
| 
								 | 
							
								      } catch (error) {
							 | 
						||
| 
								 | 
							
								        await store.commit('user/removeToken');
							 | 
						||
| 
								 | 
							
								        next(`/login?redirect=${to.path}`);
							 | 
						||
| 
								 | 
							
								        NProgress.done();
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    /* white list router */
							 | 
						||
| 
								 | 
							
								    if (whiteListRouters.indexOf(to.path) !== -1) {
							 | 
						||
| 
								 | 
							
								      next();
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      next(`/login`);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    NProgress.done();
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								router.afterEach(() => {
							 | 
						||
| 
								 | 
							
								  NProgress.done();
							 | 
						||
| 
								 | 
							
								});
							 |