LaveyD 1 年之前
父節點
當前提交
5835fa7bab
共有 8 個文件被更改,包括 114 次插入87 次删除
  1. 5 5
      src/api/login.js
  2. 2 2
      src/config/env.js
  3. 27 26
      src/pages/login/index.vue
  4. 19 17
      src/permission.js
  5. 17 16
      src/store/modules/permission.js
  6. 19 10
      src/store/modules/user.js
  7. 17 7
      src/utils/index.js
  8. 8 4
      src/utils/request.js

+ 5 - 5
src/api/login.js

@@ -3,27 +3,27 @@ import http from '@/utils/request'
 const isDev = process.env.NODE_ENV === 'development'
 // 登录
 export function login (params) {
-  return http.post('/login/auth', params)
+  return http.post('/admin/auth/login', { data: params })
 }
 
 // 获取权限信息
 export function getAuthorizationInfo () {
-  return http.post('/login/getAuthorizationInfo')
+  return http.post('/admin/auth/getCurrent')
 }
 
 // 退出
 export function logout () {
-  return http.post('/login/logout')
+  return http.post('/admin/auth/logout')
 }
 
 // 是否短信验证
 export function authsmsneed () {
-  return http.post('/login/authsmsneed')
+  return http.post('/admin/auth/authsmsneed')
 }
 
 // 发送验证码
 export function authsmssend (params) {
-  return http.post('/login/authsmssend', params)
+  return http.post('/admin/auth/authsmssend', params)
 }
 // 自营登录接口
 export function mgtlogin (params) {

+ 2 - 2
src/config/env.js

@@ -12,11 +12,11 @@ export default () => {
 
   switch (process.env.NODE_ENV) {
     case 'development': // 开发测试
-      env.baseUrl = 'http://pdev.cleartv.cn'
+      env.baseUrl = 'https://545f-124-90-244-14.ngrok-free.app/'
       break
 
     default:
-      env.baseUrl = 'http://pdev.cleartv.cn'
+      env.baseUrl = 'https://545f-124-90-244-14.ngrok-free.app/'
       break
   }
 

+ 27 - 26
src/pages/login/index.vue

@@ -28,7 +28,7 @@
             ref="loginForm"
             label-position="left"
           >
-            <el-form-item prop="username">
+            <el-form-item prop="userName">
               <span class="svg-container svg-container_login">
                 <svg-icon
                   icon-class="user"
@@ -36,9 +36,9 @@
                 />
               </span>
               <el-input
-                name="username"
+                name="userName"
                 type="text"
-                v-model="loginForm.username"
+                v-model="loginForm.userName"
                 auto-complete="on"
                 placeholder="用户名或手机号"
               />
@@ -157,12 +157,12 @@
 
 <script>
 import { mapGetters } from 'vuex'
-import { authsmsneed, authsmssend } from '@/api/login'
+import { authsmssend } from '@/api/login'
 import readCard from '@/utils/readCard'
-import { Base64 } from 'js-base64'
+// import { Base64 } from 'js-base64'
 import { encrypt } from '@/utils'
-const Store = require('electron-store')
-const localStore = new Store()
+// const Store = require('electron-store')
+// const localStore = new Store()
 
 const { app } = require('electron').remote
 const blocks = [
@@ -196,12 +196,12 @@ export default {
       appName: this.$localStore.get('appName') || process.env.VUE_APP_PROJECT_NAME,
       loginForm: {
         projectName: '',
-        username: '',
-        password: '',
+        userName: 'admin',
+        password: 'Aa123456',
         authcode: ''
       },
       loginRules: {
-        username: [{ required: true, trigger: 'blur', message: '请输入用户名或手机号' }],
+        userName: [{ required: true, trigger: 'blur', message: '请输入用户名或手机号' }],
         password: [{ required: true, trigger: 'blur', message: '请输入密码' }],
         authcode: [{ required: true, trigger: 'blur', message: '请输入短信验证码' }]
       },
@@ -213,11 +213,11 @@ export default {
     }
   },
   mounted () {
-    authsmsneed().then(res => {
-      if (res.extraInfo === '1') {
-        this.showCode = true
-      }
-    })
+    // authsmsneed().then(res => {
+    //   if (res.extraInfo === '1') {
+    //     this.showCode = true
+    //   }
+    // })
   },
   methods: {
     openLink (url) {
@@ -237,12 +237,12 @@ export default {
       }
     },
     getAuthCode (e) {
-      if (!this.loginForm.username) {
+      if (!this.loginForm.userName) {
         this.$message.error('请输入用户名或手机号')
         return
       }
       this.authCodeDisable = true
-      authsmssend({ username: this.loginForm.username }).then(res => {
+      authsmssend({ userName: this.loginForm.userName }).then(res => {
         this.$message.success('发送成功。')
         this.countDown()
       }).catch(e => {
@@ -262,20 +262,21 @@ export default {
     },
     handleLogin () {
       const params = {
-        username: this.loginForm.username.trim(),
+        userName: this.loginForm.userName.trim(),
         password: this.loginForm.password
       }
-      if (localStore.get('encryption')) {
-        params.password = Base64.encode('CTICKET' + params.password)
-      }
-      if (localStore.get('encryption_aes')) {
-        params.password = encrypt(params.password)
-      }
-      this.showCode && (params.authcode = this.loginForm.authcode)
+      // if (localStore.get('encryption')) {
+      //   params.password = Base64.encode('CTICKET' + params.password)
+      // }
+      // if (localStore.get('encryption_aes')) {
+      // }
+      params.password = encrypt(params.password)
+      // params.password = 'f9106ac71ecb19ec1c4dfc6182198e9d'
+      // this.showCode && (params.authcode = this.loginForm.authcode)
 
       this.$refs.loginForm.validate(valid => {
         if (valid) {
-          this.$log.info(`用户【${this.loginForm.username}】 登录操作`)
+          this.$log.info(`用户【${this.loginForm.userName}】 登录操作`)
 
           this.loading = true
           this.$store.dispatch('Login', params).then(() => {

+ 19 - 17
src/permission.js

@@ -18,23 +18,25 @@ router.beforeEach((to, from, next) => {
       next({ path: '/index/dashboard' })
       NProgress.done()
     } else {
-      if (store.getters.menuList.length === 0) {
-        store.dispatch('GetInfo').then(res => {
-          const extraInfo = res.extraInfo
-          localStore.set('userName', extraInfo.name)
-          store.dispatch('GenerateRoutes', extraInfo).then(() => { // 根据roles权限生成可访问的路由表
-            router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表
-            next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
-          }).catch((err) => {
-            store.dispatch('LogOut').then(() => {
-              Message.error(err || 'Verification failed, please login again')
-              next({ path: '/login' })
-            })
-          })
-        })
-      } else {
-        next()
-      }
+      next()
+      // if (store.getters.menuList.length === 0) {
+      //   store.dispatch('GetInfo').then(res => {
+      //     debugger
+      //     const { admin } = res.data || {}
+      //     localStore.set('userName', admin.loginName)
+      //     store.dispatch('GenerateRoutes', admin).then(() => { // 根据roles权限生成可访问的路由表
+      //       router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表
+      //       next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
+      //     }).catch((err) => {
+      //       store.dispatch('LogOut').then(() => {
+      //         Message.error(err || 'Verification failed, please login again')
+      //         next({ path: '/login' })
+      //       })
+      //     })
+      //   })
+      // } else {
+      //   next()
+      // }
     }
   } else {
     if (whiteList.indexOf(to.path) > -1) {

+ 17 - 16
src/store/modules/permission.js

@@ -63,24 +63,25 @@ const permission = {
       return new Promise(resolve => {
         const extraInfo = data
         let accessedRouters
-        // if (extraInfo.name === 'admin') {
-        // accessedRouters = asyncRouterMap
-        // } else {
-        accessedRouters = filterAsyncRouter(asyncRouterMap, extraInfo.menuList, extraInfo.permissionList)
-        if (extraInfo.scenicName === '仙门山') { // 仙门山 菜单文案定制
-          const agencyMenu = accessedRouters.find(v => v.name === '旅行社管理')
-          if (agencyMenu) { // 配有旅行社管理的一级菜单
-            agencyMenu.children.forEach(v => {
-              if (v.name === 'guideQuery') {
-                v.meta.title = '业务管理'
-              }
-              if (v.name === 'guideStatistic') {
-                v.meta.title = '业务售票统计'
-              }
-            })
+        debugger
+        if (extraInfo.loginName === 'admin') {
+          accessedRouters = asyncRouterMap
+        } else {
+          accessedRouters = filterAsyncRouter(asyncRouterMap, extraInfo.menuList, extraInfo.permissionList)
+          if (extraInfo.scenicName === '仙门山') { // 仙门山 菜单文案定制
+            const agencyMenu = accessedRouters.find(v => v.name === '旅行社管理')
+            if (agencyMenu) { // 配有旅行社管理的一级菜单
+              agencyMenu.children.forEach(v => {
+                if (v.name === 'guideQuery') {
+                  v.meta.title = '业务管理'
+                }
+                if (v.name === 'guideStatistic') {
+                  v.meta.title = '业务售票统计'
+                }
+              })
+            }
           }
         }
-        // }
         commit('SET_ROUTERS', accessedRouters)
         resolve()
       })

+ 19 - 10
src/store/modules/user.js

@@ -1,5 +1,6 @@
 import { login, getAuthorizationInfo, logout } from '@/api/login'
 import { getAccountList } from '@/api/systemSetting/account'
+import { setToken } from '@/utils/auth'
 
 const log = require('electron-log')
 const Store = require('electron-store')
@@ -56,8 +57,15 @@ const user = {
     Login ({ commit }, userInfo) {
       return new Promise((resolve, reject) => {
         login(userInfo).then(data => {
-          localStore.set('token', new Date())
-          resolve(data)
+          if (data.code === '200') {
+            const { token } = data.data
+            commit('SET_TOKEN', token)
+            setToken(token)
+            localStore.set('token', token)
+            resolve(data.data)
+          } else {
+            reject(data.msg || '登录失败')
+          }
         }).catch(error => {
           reject(error)
         })
@@ -68,19 +76,20 @@ const user = {
     GetInfo ({ commit, state }) {
       return new Promise((resolve, reject) => {
         getAuthorizationInfo().then(res => {
-          let info = res.extraInfo
+          debugger
+          const { admin } = res.data || {}
           // 设置ID
-          commit('SET_ID', info.id)
+          commit('SET_ID', admin?.id)
           // 设置用户名
-          commit('SET_NAME', info.nickName)
+          commit('SET_NAME', admin?.loginName)
           // 设置景点名
-          commit('SET_SCENIC_NAME', info.scenicName)
+          commit('SET_SCENIC_NAME', admin?.scenicName || '')
           // 设置菜单
-          commit('SET_MENU_LIST', info.menuList)
+          commit('SET_MENU_LIST', admin?.menuList || [])
           // 设置按钮权限
-          commit('SET_PERMISSIONLIST', info.permissionList)
+          commit('SET_PERMISSIONLIST', admin?.permissionList || [])
 
-          log.info(`【${info.nickName}】 登录成功`)
+          log.info(`【${admin?.loginName}】 登录成功`)
           // let permissions = _(info.permissionList)
           //   .groupBy(i => {
           //     return i.split(':')[0]
@@ -117,7 +126,7 @@ const user = {
     FedLogOut ({ commit }) {
       return new Promise(resolve => {
         localStore.delete('token')
-        // commit('SET_TOKEN', '')
+        commit('SET_TOKEN', '')
         // removeToken()
         resolve()
       })

+ 17 - 7
src/utils/index.js

@@ -469,26 +469,36 @@ export function isEmpty (val) {
   return !val && val !== 0
 }
 
-const key = CryptoJS.enc.Utf8.parse('AESAESAESAESAESA') // 密钥
-const iv = CryptoJS.enc.Utf8.parse('') // 偏移量
+const desKey = 'fnFACVwC'
+const key = CryptoJS.enc.Hex.parse('TgxRS8DG65EjK8cpKTiPAw==') // 密钥
+const iv = CryptoJS.enc.Hex.parse('') // 偏移量
 
 // aes加密
 export function encrypt (word) {
   let encrypted = ''
   if (typeof word === 'string') {
-    const srcs = CryptoJS.enc.Utf8.parse(word)
-    encrypted = CryptoJS.AES.encrypt(srcs, key, {
-      iv: iv,
-      mode: CryptoJS.mode.CBC,
+    const key = CryptoJS.enc.Utf8.parse(desKey)
+    console.log(word, desKey, 'aaaa')
+    encrypted = CryptoJS.DES.encrypt(word, key, {
+      mode: CryptoJS.mode.ECB,
       padding: CryptoJS.pad.Pkcs7
     })
+
+    return encrypted.toString()
+
+    // const srcs = CryptoJS.enc.Hex.parse(word)
+    // // var encryptedBase64Str = CryptoJS.enc.Base64.stringify(srcs)
+    // encrypted = CryptoJS.AES.encrypt(srcs, key, {
+    //   mode: CryptoJS.mode.ECB,
+    //   padding: CryptoJS.pad.ZeroPadding
+    // })
   } else if (typeof word === 'object') {
     // 对象格式的转成json字符串
     const data = JSON.stringify(word)
     const srcs = CryptoJS.enc.Utf8.parse(data)
     encrypted = CryptoJS.AES.encrypt(srcs, key, {
       iv: iv,
-      mode: CryptoJS.mode.CBC,
+      mode: CryptoJS.mode.ECB,
       padding: CryptoJS.pad.Pkcs7
     })
   }

+ 8 - 4
src/utils/request.js

@@ -1,7 +1,7 @@
 import axios from 'axios'
 // import BASE_URL from '../config/env'
 import store from '../store'
-// import { getToken } from '@/utils/auth'
+import { getToken } from '@/utils/auth'
 import router from '@/router'
 import { Message } from 'element-ui'
 import { resetServerTime } from './index'
@@ -19,9 +19,13 @@ const service = axios.create({
 
 // request拦截器
 service.interceptors.request.use(config => {
-  // if (store.getters.token) {
-  //   config.data.userToken = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
-  // }
+  const token = getToken()
+  if (token) {
+    // config.data.SaToken = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
+    Object.assign(config, {
+      headers: { 'SaToken': token }
+    })
+  }
   return config
 }, error => {
   // Do something with request error