rkljw 2 өдөр өмнө
parent
commit
9f1d7c5721

+ 109 - 94
src/permission.js

@@ -3,115 +3,130 @@ import store from './store'
 import { Message } from 'element-ui'
 import NProgress from 'nprogress' // progress bar
 import 'nprogress/nprogress.css' // progress bar style
-import { getToken,setUserUrl, setUseType,setWebSiteId,hashParams,getUseType,getUserUrl} from '@/utils/auth' // get token from cookie
+import { getToken, setUserUrl, setUseType, setWebSiteId, hashParams, setLoginStatus, getLoginStatus } from '@/utils/auth' // get token from cookie
 import getPageTitle from '@/utils/get-page-title'
 import URL from '@/utils/baseUrl';
-import {getInfo} from '@/api/user'
+import { getInfo } from '@/api/user'
 NProgress.configure({ showSpinner: false }) // NProgress Configuration
 
 const whiteList = ['/login', '/auth-redirect'] // no redirect whitelist
 
-router.beforeEach(async(to, from, next) => {
-  // start progress bar
-  NProgress.start()
+router.beforeEach(async (to, from, next) => {
+    // start progress bar
+    NProgress.start()
 
-  // set page title
-  document.title = getPageTitle(to.meta.title)
+    // set page title
+    document.title = getPageTitle(to.meta.title)
 
-  // determine whether the user has logged in
-  const hasToken = getToken()
-  //检测token的状态
-  await store.dispatch('user/logoutStatus')
+    // determine whether the user has logged in
+    const hasToken = getToken()
+    //检测token的状态
+    await store.dispatch('user/logoutStatus')
 
-  if (hasToken) {
-    if (to.path === '/login') {
-      
-      // Retrieve userurl
-      const userurl = hashParams();
-      if(userurl){
-        setUserUrl(userurl, 86400) 
-      }
-  
-      const userInfo = await getInfo();
-      console.log("User Info:", userInfo);
-      if (userInfo.code === 200) {
-        setUseType(userInfo.data.userType, 86400)
-        setWebSiteId(userInfo.data.siteId, 86400)
-        next({ path: '/' })
-        NProgress.done() // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939
-      }else{
-        next({ path: '/' })
-        NProgress.done() // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939
-      }
-      // if is logged in, redirect to the home page
+    //获得用户操作管理系统的权限
+    const loginStatus = getLoginStatus()
 
-    
-    } else {
-      // determine whether the user has obtained his permission roles through getInfo
-      const hasRoles = store.getters.roles && store.getters.roles.length > 0
-      if (hasRoles) {
-        next()
-      } else {
-        try {
-          // get user info
-          // note: roles must be a object array! such as: ['admin'] or ,['developer','editor']
-          const { roles } = await store.dispatch('user/getInfo')
-
-          // generate accessible routes map based on roles
-          const accessRoutes = await store.dispatch('permission/generateRoutes', roles)
-
-          // dynamically add accessible routes
-          router.addRoutes(accessRoutes)
 
-          // hack method to ensure that addRoutes is complete
-          // set the replace: true, so the navigation will not leave a history record
-          next({ ...to, replace: true })
-
-          // Call getInfo to fetch user information
-          const userInfo = await getInfo();
-          console.log("User Info:", userInfo);
-        } catch (error) {
-          // remove token and go to login page to re-login
-          await store.dispatch('user/resetToken')
-          Message.error(error || 'Has Error')
-          next(`/login?redirect=${to.path}`)
-          NProgress.done()
+    if (hasToken) {
+        if (loginStatus == 0 || loginStatus == null || loginStatus == undefined) {
+            if (whiteList.indexOf(to.path) !== -1) {
+                console.log("用户没有权限操作管理系统,使其保持在登录页面");
+                next();
+            } else {
+                next(`/login?redirect=${to.path}`);
+                NProgress.done();
+            }
+        } else {
+            if (to.path === '/login') {
+                // Retrieve userurl
+                const userurl = hashParams();
+                if (userurl) {
+                    setUserUrl(userurl, 86400)
+                }
+                const userInfo = await getInfo();
+                console.log("User Info:", userInfo);
+                if (userInfo.code === 200) {
+                    console.log("####")
+                    setUseType(userInfo.data.userType, 86400)
+                    setWebSiteId(userInfo.data.siteId, 86400)
+                    next({ path: '/' })
+                    NProgress.done() // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939
+                } else {
+                    if(userInfo.code == -1){
+                        setLoginStatus(0,86400)
+                        next({ path: '/' })
+                        NProgress.done() // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939
+                    }else{
+                        next({ path: '/' })
+                        NProgress.done() // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939
+                    }
+                }
+                // if is logged in, redirect to the home page
+            } else {
+                // determine whether the user has obtained his permission roles through getInfo
+                const hasRoles = store.getters.roles && store.getters.roles.length > 0
+                if (hasRoles) {
+                    next()
+                } else {
+                    try {
+                        // get user info
+                        // note: roles must be a object array! such as: ['admin'] or ,['developer','editor']
+                        const { roles } = await store.dispatch('user/getInfo')
+                        // generate accessible routes map based on roles
+                        const accessRoutes = await store.dispatch('permission/generateRoutes', roles)
+                        // dynamically add accessible routes
+                        router.addRoutes(accessRoutes)
+                        // hack method to ensure that addRoutes is complete
+                        // set the replace: true, so the navigation will not leave a history record
+                        next({ ...to, replace: true })
+                        // Call getInfo to fetch user information
+                        const userInfo = await getInfo();
+                        console.log("User Info:", userInfo);
+                        console.log("33333333333")
+                    } catch (error) {
+                        console.log("444444444444")
+                        // remove token and go to login page to re-login
+                        await store.dispatch('user/resetToken')
+                        Message.error(error || 'Has Error')
+                        next(`/login?redirect=${to.path}`)
+                        NProgress.done()
+                    }
+                }
+            }
         }
-      }
-    }
-  } else {
-    /* has no token*/
-    if (whiteList.indexOf(to.path) !== -1) {
-      const userurl = hashParams();
-      if(userurl){
-        setUserUrl(userurl, 86400) 
-      }
-      // in the free login whitelist, go directly
-      next()
     } else {
-      const userType = getUseType()
-      if(userType==10000){
-        next(`/login?redirect=${to.path}`)
-        NProgress.done()
-        setUserUrl(URL.webUrl, 86400)
-      }else{
-        const userurl = getUserUrl();
-        let url=''
-        if (!userurl.startsWith('http://') && !userurl.startsWith('https://')) {
-          // 如果不是,则拼接上 http://
-          url = 'http://' + userurl;
-        }else{
-          url = userurl;
+        /* has no token*/
+        if (whiteList.indexOf(to.path) !== -1) {
+            const userurl = hashParams();
+            if(userurl){
+            setUserUrl(userurl, 86400) 
+            }
+            // in the free login whitelist, go directly
+            next()
+        } else {
+            const userType = getUseType()
+            if(userType==10000){
+            next(`/login?redirect=${to.path}`)
+            NProgress.done()
+            setUserUrl(URL.webUrl, 86400)
+            }else{
+            const userurl = getUserUrl();
+            let url=''
+            if (!userurl.startsWith('http://') && !userurl.startsWith('https://')) {
+                // 如果不是,则拼接上 http://
+                url = 'http://' + userurl;
+            }else{
+                url = userurl;
+            }
+            next(`/login?backurl=${url}`)
+            NProgress.done()
+            setUserUrl(userurl, 86400)
+            }
         }
-        next(`/login?backurl=${url}`)
-        NProgress.done()
-        setUserUrl(userurl, 86400)
-      }
     }
-  }
 })
 
 router.afterEach(() => {
-  // finish progress bar
-  NProgress.done()
-})
+    // finish progress bar
+    NProgress.done()
+})

+ 7 - 1
src/views/news/addGood.vue

@@ -528,7 +528,9 @@ export default {
     //1.2 提交表单
     addToServe() {
 
-      this.form.website_id = getWebSiteId();
+      if (this.userType != 10000) {
+        this.form.website_id = getWebSiteId()
+      }
       console.log("提交时获取网站id:", this.form.website_id)
       //先进行验证
       this.$refs.form.validate(valid => {
@@ -571,6 +573,7 @@ export default {
             console.log("用户身份为其他用户,提交到审核!")
             this.form.status = 1;
           }
+          return;
           this.$store.dispatch('news/addGood', this.form).then(res => {
             if (res.code == 200) {
               //汇报结果
@@ -832,6 +835,9 @@ export default {
     'form.website_id': {
       handler(newVal, oldVal) {
         if (newVal !== oldVal) {
+          console.log('website_id变化了', newVal);
+          console.log('website_id变化了', oldVal);
+          console.log('website_id变化了', this.form.cat_arr_id);
           this.form.cat_arr_id = [];
           this.form.catid = "";
           this.parentKey += 1;