# vue router
Router
```flow
enter=>start: Router.js
to404=>operation: 404
toNext1=>operation: next()
toNext2=>operation: next()
toNext3=>operation: next()
toReset=>operation: 重設登入資料
toNoPermission=>operation: next('/no-perm')
toLogin=>operation: next('/login')
toLogin2=>operation: next('/login')
beforeEach=>operation: route.beforeEach
checkRoute=>condition: 是否存在路由
hasToken=>condition: 是否存在Token
isLogin=>condition: 是否isLogin
isWhileList=>condition: 是否在白名單內
getUserInfo=>condition: 取得登入資訊
needPermission=>condition: 是否需要驗證權限
checkPermission=>condition: 是否需要通過驗證
enter->checkRoute
checkRoute(yes)->beforeEach
checkRoute(no)->to404
beforeEach->hasToken
hasToken(yes)->isLogin
hasToken(no)->isWhileList
isLogin(yes)->needPermission
needPermission(yes)->checkPermission
needPermission(no)->toNext2
checkPermission(yes)->toNext3
checkPermission(no)->toNoPermission
isLogin(no)->getUserInfo
getUserInfo(yes)->needPermission
getUserInfo(no)->toReset
isWhileList(yes)->toNext1
isWhileList(no)->toLogin
toReset->toLogin
```