You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by ju...@apache.org on 2020/06/30 00:17:29 UTC

[incubator-apisix-dashboard] branch master-vue updated: fix logo missing problem (#288)

This is an automated email from the ASF dual-hosted git repository.

juzhiyuan pushed a commit to branch master-vue
in repository https://gitbox.apache.org/repos/asf/incubator-apisix-dashboard.git


The following commit(s) were added to refs/heads/master-vue by this push:
     new edfd447  fix logo missing problem (#288)
edfd447 is described below

commit edfd447750a18594aef95dd37275c2d02201003e
Author: ko han <ha...@outlook.com>
AuthorDate: Tue Jun 30 08:17:19 2020 +0800

    fix logo missing problem (#288)
    
    * fix: miss logo in production environment
    
    * fix: login and logout
---
 package.json                                  |  2 +-
 src/layout/components/Sidebar/SidebarLogo.vue |  5 +++--
 src/store/modules/user.ts                     | 32 +++++++++++++--------------
 src/utils/request.ts                          |  3 ---
 src/views/login/index.vue                     |  7 +++---
 5 files changed, 23 insertions(+), 26 deletions(-)

diff --git a/package.json b/package.json
index b769c33..60c8e3a 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
   "scripts": {
     "serve": "concurrently \"vue-cli-service serve\"",
     "lint": "vue-cli-service lint",
-    "build:prod": "vue-cli-service build"
+    "build:prod": "NODE_ENV=production vue-cli-service build"
   },
   "dependencies": {
     "axios": "^0.19.0",
diff --git a/src/layout/components/Sidebar/SidebarLogo.vue b/src/layout/components/Sidebar/SidebarLogo.vue
index 4ddf188..dc045cc 100644
--- a/src/layout/components/Sidebar/SidebarLogo.vue
+++ b/src/layout/components/Sidebar/SidebarLogo.vue
@@ -37,7 +37,7 @@
         to="/"
       >
         <img
-          src="favicon.ico"
+          :src="logoURL"
           class="sidebar-logo"
         >
       </router-link>
@@ -48,7 +48,7 @@
         to="/"
       >
         <img
-          src="favicon.ico"
+          :src="logoURL"
           class="sidebar-logo"
         >
         <h1 class="sidebar-title">
@@ -69,6 +69,7 @@ export default class extends Vue {
   @Prop({ required: true }) private collapse!: boolean
 
   private title = 'APISIX'
+  private logoURL = process.env.NODE_ENV === 'production' ? '/apisix/dashboard/favicon.ico' : '/favicon.ico'
 }
 </script>
 
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 95d4785..42dd340 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -23,12 +23,12 @@
  */
 
 import { VuexModule, Module, Action, Mutation, getModule } from 'vuex-module-decorators'
-// import { login, logout, getUserInfo } from '@/api/users'
 import { getToken, setToken, removeToken } from '@/utils/cookies'
 import router, { resetRouter } from '@/router'
 import { PermissionModule } from './permission'
 import { TagsViewModule } from './tags-view'
 import store from '@/store'
+import request from '@/utils/request'
 
 export interface IUserState {
   token: string
@@ -39,9 +39,15 @@ export interface IUserState {
   email: string
 }
 
+const TOKEN_KEY= "GLOBAL_APISIX_API_KEY"
+
+if (localStorage.getItem(TOKEN_KEY)) {
+  request.defaults.headers["X-API-KEY"] = localStorage.getItem(TOKEN_KEY)
+}
+
 @Module({ dynamic: true, store, name: 'user' })
 class User extends VuexModule implements IUserState {
-  public token = getToken() || ''
+  public token = localStorage.getItem(TOKEN_KEY) || ''
   public name = ''
   public avatar = ''
   public introduction = ''
@@ -79,23 +85,18 @@ class User extends VuexModule implements IUserState {
   }
 
   @Action
-  public async Login(userInfo: { username: string, password: string}) {
-    let { username, password } = userInfo
-    username = username.trim()
-    // TEMP: 在此处绕过登录
-    // const { data } = await login({ username, password })
-
-    const data = {
-      accessToken: username + '-token'
-    }
-
-    setToken(data.accessToken)
-    this.SET_TOKEN(data.accessToken)
+  public async Login(token: string) {
+    setToken(token)
+    localStorage.setItem(TOKEN_KEY, token)
+    this.SET_TOKEN(token)
+    request.defaults.headers["X-API-KEY"] = token
   }
 
   @Action
   public ResetToken() {
     removeToken()
+    localStorage.removeItem(TOKEN_KEY)
+    delete request.defaults.headers["X-API-KEY"]
     this.SET_TOKEN('')
     this.SET_ROLES([])
   }
@@ -161,8 +162,7 @@ class User extends VuexModule implements IUserState {
     // await logout()
     removeToken()
     resetRouter()
-    this.SET_TOKEN('')
-    this.SET_ROLES([])
+    this.ResetToken()
   }
 }
 
diff --git a/src/utils/request.ts b/src/utils/request.ts
index e730d5f..2d9bb50 100644
--- a/src/utils/request.ts
+++ b/src/utils/request.ts
@@ -28,9 +28,6 @@ import { Message } from 'element-ui'
 const service = axios.create({
   baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
   timeout: 5000,
-  headers: {
-    'X-API-KEY': localStorage.getItem('GLOBAL_API_KEY')
-  }
 })
 
 service.interceptors.request.use(
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 3efe7c9..2679224 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -49,7 +49,7 @@
           placeholder="Please input API KEY here"
           name="apikey"
           type="text"
-          autocomplete="on"
+          autocomplete="off"
         />
       </el-form-item>
 
@@ -98,9 +98,8 @@ export default class extends Vue {
   private redirect?: string
 
   private async handleLogin() {
-    await UserModule.Login({ username: '', password: '' })
-    localStorage.setItem('GLOBAL_API_KEY', this.loginForm.apikey)
-    window.location.replace('/')
+    await UserModule.Login(this.loginForm.apikey)
+    await this.$router.replace(this.redirect || '/')
   }
 }
 </script>