Commit d888a81a6c7334c3b4beab7d440e3f0ba72a5ff6
1 parent
9287779a
提交权限控制
Showing
4 changed files
with
65 additions
and
55 deletions
src/permission.js
| 1 | import router from './router' | 1 | import router from './router' |
| 2 | import store from './store' | 2 | import store from './store' |
| 3 | -import { Message } from 'element-ui' | 3 | +import {Message} from 'element-ui' |
| 4 | import NProgress from 'nprogress' // progress bar | 4 | import NProgress from 'nprogress' // progress bar |
| 5 | import 'nprogress/nprogress.css' // progress bar style | 5 | import 'nprogress/nprogress.css' // progress bar style |
| 6 | -import { getToken } from '@/utils/auth' // get token from cookie | 6 | +import {getToken} from '@/utils/auth' // get token from cookie |
| 7 | import getPageTitle from '@/utils/get-page-title' | 7 | import getPageTitle from '@/utils/get-page-title' |
| 8 | 8 | ||
| 9 | -NProgress.configure({ showSpinner: false }) // NProgress Configuration | 9 | +NProgress.configure({showSpinner: false}) // NProgress Configuration |
| 10 | 10 | ||
| 11 | const whiteList = ['/login'] // no redirect whitelist | 11 | const whiteList = ['/login'] // no redirect whitelist |
| 12 | 12 | ||
| 13 | -router.beforeEach(async(to, from, next) => { | 13 | +router.beforeEach(async (to, from, next) => { |
| 14 | + debugger | ||
| 14 | // start progress bar | 15 | // start progress bar |
| 15 | NProgress.start() | 16 | NProgress.start() |
| 17 | + if (to.path.indexOf("service") == -1) { | ||
| 18 | + next() | ||
| 19 | + NProgress.done() | ||
| 20 | + } else { | ||
| 21 | + // set page title | ||
| 22 | + document.title = getPageTitle(to.meta.title) | ||
| 16 | 23 | ||
| 17 | - // set page title | ||
| 18 | - document.title = getPageTitle(to.meta.title) | ||
| 19 | - | ||
| 20 | - // determine whether the user has logged in | ||
| 21 | - const hasToken = getToken() | 24 | + // determine whether the user has logged in |
| 25 | + const hasToken = getToken() | ||
| 22 | 26 | ||
| 23 | - if (hasToken) { | ||
| 24 | - if (to.path === '/login') { | ||
| 25 | - // if is logged in, redirect to the home page | ||
| 26 | - next({ path: '/' }) | ||
| 27 | - NProgress.done() | ||
| 28 | - } else { | ||
| 29 | - const hasGetUserInfo = store.getters.name | ||
| 30 | - if (hasGetUserInfo) { | ||
| 31 | - next() | 27 | + if (hasToken) { |
| 28 | + if (to.path === '/login') { | ||
| 29 | + // if is logged in, redirect to the home page | ||
| 30 | + next({path: '/'}) | ||
| 31 | + NProgress.done() | ||
| 32 | } else { | 32 | } else { |
| 33 | - try { | ||
| 34 | - // get user info | ||
| 35 | - await store.dispatch('user/getInfo') | ||
| 36 | - | 33 | + const hasGetUserInfo = store.getters.name |
| 34 | + if (hasGetUserInfo) { | ||
| 37 | next() | 35 | next() |
| 38 | - } catch (error) { | ||
| 39 | - // remove token and go to login page to re-login | ||
| 40 | - await store.dispatch('user/resetToken') | ||
| 41 | - Message.error(error || 'Has Error') | ||
| 42 | - next(`/login?redirect=${to.path}`) | ||
| 43 | - NProgress.done() | 36 | + } else { |
| 37 | + try { | ||
| 38 | + // get user info | ||
| 39 | + await store.dispatch('user/getInfo') | ||
| 40 | + | ||
| 41 | + next() | ||
| 42 | + } catch (error) { | ||
| 43 | + // remove token and go to login page to re-login | ||
| 44 | + await store.dispatch('user/resetToken') | ||
| 45 | + Message.error(error || 'Has Error') | ||
| 46 | + next(`/login?redirect=${to.path}`) | ||
| 47 | + NProgress.done() | ||
| 48 | + } | ||
| 44 | } | 49 | } |
| 45 | } | 50 | } |
| 46 | - } | ||
| 47 | - } else { | ||
| 48 | - /* has no token*/ | ||
| 49 | - | ||
| 50 | - if (whiteList.indexOf(to.path) !== -1) { | ||
| 51 | - // in the free login whitelist, go directly | ||
| 52 | - next() | ||
| 53 | } else { | 51 | } else { |
| 54 | - // other pages that do not have permission to access are redirected to the login page. | ||
| 55 | - next(`/login?redirect=${to.path}`) | ||
| 56 | - NProgress.done() | 52 | + /* has no token*/ |
| 53 | + | ||
| 54 | + if (whiteList.indexOf(to.path) !== -1) { | ||
| 55 | + // in the free login whitelist, go directly | ||
| 56 | + next() | ||
| 57 | + } else { | ||
| 58 | + // other pages that do not have permission to access are redirected to the login page. | ||
| 59 | + next(`/login?redirect=${to.path}`) | ||
| 60 | + NProgress.done() | ||
| 61 | + } | ||
| 57 | } | 62 | } |
| 58 | } | 63 | } |
| 59 | }) | 64 | }) |
src/router/index.js
| @@ -55,7 +55,7 @@ export const constantRoutes = [ | @@ -55,7 +55,7 @@ export const constantRoutes = [ | ||
| 55 | }, | 55 | }, |
| 56 | { | 56 | { |
| 57 | path: '/service', | 57 | path: '/service', |
| 58 | - redirect:'/dashboard', | 58 | + redirect:'/service/dashboard', |
| 59 | component: () => import('@/views/service'), | 59 | component: () => import('@/views/service'), |
| 60 | meta: { | 60 | meta: { |
| 61 | title: '停车服务' | 61 | title: '停车服务' |
| @@ -63,47 +63,47 @@ export const constantRoutes = [ | @@ -63,47 +63,47 @@ export const constantRoutes = [ | ||
| 63 | }, | 63 | }, |
| 64 | children:[ | 64 | children:[ |
| 65 | { | 65 | { |
| 66 | - path: '/dashboard', | 66 | + path: '/service/dashboard', |
| 67 | component: () => import('@/views/dashboard/index'), | 67 | component: () => import('@/views/dashboard/index'), |
| 68 | meta: { title: '服务首页', icon: 'dashboard' } | 68 | meta: { title: '服务首页', icon: 'dashboard' } |
| 69 | }, | 69 | }, |
| 70 | 70 | ||
| 71 | { | 71 | { |
| 72 | - path: '/account', | 72 | + path: '/service/account', |
| 73 | component: () => import('@/views/account/index'), | 73 | component: () => import('@/views/account/index'), |
| 74 | meta: { title: '我的账户',icon: 'money' } | 74 | meta: { title: '我的账户',icon: 'money' } |
| 75 | 75 | ||
| 76 | }, | 76 | }, |
| 77 | { | 77 | { |
| 78 | - path: '/cardticket', | 78 | + path: '/service/cardticket', |
| 79 | component: () => import('@/views/cardticket/index'), | 79 | component: () => import('@/views/cardticket/index'), |
| 80 | meta: { title: '我的卡券', icon: 'card' } | 80 | meta: { title: '我的卡券', icon: 'card' } |
| 81 | }, | 81 | }, |
| 82 | 82 | ||
| 83 | { | 83 | { |
| 84 | - path: '/order', | 84 | + path: '/service/order', |
| 85 | component: () => import('@/views/order/index'), | 85 | component: () => import('@/views/order/index'), |
| 86 | meta: { title: '我的订单', icon: 'form' } | 86 | meta: { title: '我的订单', icon: 'form' } |
| 87 | }, | 87 | }, |
| 88 | { | 88 | { |
| 89 | - path: '/payback', | 89 | + path: '/service/payback', |
| 90 | component: () => import('@/views/payback/index'), | 90 | component: () => import('@/views/payback/index'), |
| 91 | meta: { title: '欠费补缴', icon: 'nested' } | 91 | meta: { title: '欠费补缴', icon: 'nested' } |
| 92 | }, | 92 | }, |
| 93 | 93 | ||
| 94 | { | 94 | { |
| 95 | - path: '/mycar', | 95 | + path: '/service/mycar', |
| 96 | component: () => import('@/views/mycar/index'), | 96 | component: () => import('@/views/mycar/index'), |
| 97 | meta: { title: '我的车辆', icon: 'car' } | 97 | meta: { title: '我的车辆', icon: 'car' } |
| 98 | 98 | ||
| 99 | }, | 99 | }, |
| 100 | { | 100 | { |
| 101 | - path: '/information', | 101 | + path: '/service/information', |
| 102 | component: () => import('@/views/information/index'), | 102 | component: () => import('@/views/information/index'), |
| 103 | meta: { title: '个人资料' ,icon: 'people'} | 103 | meta: { title: '个人资料' ,icon: 'people'} |
| 104 | }, | 104 | }, |
| 105 | { | 105 | { |
| 106 | - path: '/myevaluate', | 106 | + path: '/service/myevaluate', |
| 107 | component: () => import('@/views/myevaluate/index'), | 107 | component: () => import('@/views/myevaluate/index'), |
| 108 | meta: { title: '我的评价',icon: 'skill' } | 108 | meta: { title: '我的评价',icon: 'skill' } |
| 109 | } | 109 | } |
src/views/login/index.vue
| @@ -115,6 +115,11 @@ export default { | @@ -115,6 +115,11 @@ export default { | ||
| 115 | type: 'success', | 115 | type: 'success', |
| 116 | message: '验证码发送成功!' | 116 | message: '验证码发送成功!' |
| 117 | }); | 117 | }); |
| 118 | + }else{ | ||
| 119 | + this.$message({ | ||
| 120 | + type: 'error', | ||
| 121 | + message: data.msg | ||
| 122 | + }); | ||
| 118 | } | 123 | } |
| 119 | }); | 124 | }); |
| 120 | //this.validateBtn(); | 125 | //this.validateBtn(); |
src/views/service.vue
| @@ -12,7 +12,7 @@ | @@ -12,7 +12,7 @@ | ||
| 12 | background-color="#545c64" | 12 | background-color="#545c64" |
| 13 | text-color="#fff" | 13 | text-color="#fff" |
| 14 | active-text-color="#409eff" router> | 14 | active-text-color="#409eff" router> |
| 15 | - <el-menu-item index="/dashboard" class="is-active"> | 15 | + <el-menu-item index="/service/dashboard" class="is-active"> |
| 16 | <i class="el-icon-menu "></i> | 16 | <i class="el-icon-menu "></i> |
| 17 | <span slot="title">服务首页</span> | 17 | <span slot="title">服务首页</span> |
| 18 | </el-menu-item> | 18 | </el-menu-item> |
| @@ -21,18 +21,18 @@ | @@ -21,18 +21,18 @@ | ||
| 21 | <i class="el-icon-bank-card"></i> | 21 | <i class="el-icon-bank-card"></i> |
| 22 | <span>我的钱包</span> | 22 | <span>我的钱包</span> |
| 23 | </template> | 23 | </template> |
| 24 | - <el-menu-item index="/account">我的账户</el-menu-item> | ||
| 25 | - <el-menu-item index="/cardticket">我的卡券</el-menu-item> | 24 | + <el-menu-item index="/service/account">我的账户</el-menu-item> |
| 25 | + <el-menu-item index="/service/cardticket">我的卡券</el-menu-item> | ||
| 26 | </el-submenu> | 26 | </el-submenu> |
| 27 | - <el-menu-item index="/order"> | 27 | + <el-menu-item index="/service/order"> |
| 28 | <i class="el-icon-tickets"></i> | 28 | <i class="el-icon-tickets"></i> |
| 29 | <span slot="title">我的订单</span> | 29 | <span slot="title">我的订单</span> |
| 30 | </el-menu-item> | 30 | </el-menu-item> |
| 31 | - <el-menu-item index="/payback"> | 31 | + <el-menu-item index="/service/payback"> |
| 32 | <i class="el-icon-finished"></i> | 32 | <i class="el-icon-finished"></i> |
| 33 | <span slot="title">欠费补缴</span> | 33 | <span slot="title">欠费补缴</span> |
| 34 | </el-menu-item> | 34 | </el-menu-item> |
| 35 | - <el-menu-item index="/mycar"> | 35 | + <el-menu-item index="/service/mycar"> |
| 36 | <i class="el-icon-truck"></i> | 36 | <i class="el-icon-truck"></i> |
| 37 | <span slot="title">我的车辆</span> | 37 | <span slot="title">我的车辆</span> |
| 38 | </el-menu-item> | 38 | </el-menu-item> |
| @@ -41,8 +41,8 @@ | @@ -41,8 +41,8 @@ | ||
| 41 | <i class="el-icon-user-solid"></i> | 41 | <i class="el-icon-user-solid"></i> |
| 42 | <span>个人中心</span> | 42 | <span>个人中心</span> |
| 43 | </template> | 43 | </template> |
| 44 | - <el-menu-item index="/information">个人资料</el-menu-item> | ||
| 45 | - <el-menu-item index="/myevaluate">我的评价</el-menu-item> | 44 | + <el-menu-item index="/service/information">个人资料</el-menu-item> |
| 45 | + <el-menu-item index="/service/myevaluate">我的评价</el-menu-item> | ||
| 46 | </el-submenu> | 46 | </el-submenu> |
| 47 | </el-menu> | 47 | </el-menu> |
| 48 | </el-aside> | 48 | </el-aside> |