This is an automated email from the ASF dual-hosted git repository.
nvazquez pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/main by this push:
new 5eb2b693e90 fixes login button not work and Single Sign-On tab
disabled after logout (#6197)
5eb2b693e90 is described below
commit 5eb2b693e907886e826f059aeca3aab975167d0f
Author: Hoang Nguyen <[email protected]>
AuthorDate: Mon Apr 11 20:45:51 2022 +0700
fixes login button not work and Single Sign-On tab disabled after logout
(#6197)
---
ui/src/api/index.js | 4 +++-
ui/src/store/getters.js | 3 ++-
ui/src/store/modules/user.js | 8 +++++++-
ui/src/utils/request.js | 3 +++
ui/src/views/auth/Login.vue | 26 ++++++++++++++++++++------
5 files changed, 35 insertions(+), 9 deletions(-)
diff --git a/ui/src/api/index.js b/ui/src/api/index.js
index e54a71552ea..27356eea234 100644
--- a/ui/src/api/index.js
+++ b/ui/src/api/index.js
@@ -41,7 +41,9 @@ export function api (command, args = {}, method = 'GET', data
= {}) {
}
export function login (arg) {
- sourceToken.init()
+ if (!sourceToken.checkExistSource()) {
+ sourceToken.init()
+ }
// Logout before login is called to purge any duplicate sessionkey cookies
api('logout')
diff --git a/ui/src/store/getters.js b/ui/src/store/getters.js
index d0ebd6743e5..214b4b04a0d 100644
--- a/ui/src/store/getters.js
+++ b/ui/src/store/getters.js
@@ -42,7 +42,8 @@ const getters = {
darkMode: state => state.user.darkMode,
defaultListViewPageSize: state => state.user.defaultListViewPageSize,
countNotify: state => state.user.countNotify,
- customColumns: state => state.user.customColumns
+ customColumns: state => state.user.customColumns,
+ logoutFlag: state => state.user.logoutFlag
}
export default getters
diff --git a/ui/src/store/modules/user.js b/ui/src/store/modules/user.js
index 95f91d733c3..3a5233aa13b 100644
--- a/ui/src/store/modules/user.js
+++ b/ui/src/store/modules/user.js
@@ -57,7 +57,8 @@ const user = {
domainStore: {},
darkMode: false,
defaultListViewPageSize: 20,
- countNotify: 0
+ countNotify: 0,
+ logoutFlag: false
},
mutations: {
@@ -126,6 +127,9 @@ const user = {
SET_CUSTOM_COLUMNS: (state, customColumns) => {
vueProps.$localStorage.set(CUSTOM_COLUMNS, customColumns)
state.customColumns = customColumns
+ },
+ SET_LOGOUT_FLAG: (state, flag) => {
+ state.logoutFlag = flag
}
},
@@ -166,6 +170,7 @@ const user = {
commit('SET_LDAP', {})
commit('SET_CLOUDIAN', {})
commit('SET_DOMAIN_STORE', {})
+ commit('SET_LOGOUT_FLAG', false)
notification.destroy()
@@ -293,6 +298,7 @@ const user = {
commit('SET_CLOUDIAN', {})
commit('RESET_THEME')
commit('SET_DOMAIN_STORE', {})
+ commit('SET_LOGOUT_FLAG', true)
vueProps.$localStorage.remove(CURRENT_PROJECT)
vueProps.$localStorage.remove(ACCESS_TOKEN)
vueProps.$localStorage.remove(HEADER_NOTICES)
diff --git a/ui/src/utils/request.js b/ui/src/utils/request.js
index 64a63d64e2c..6b01bec5c1b 100644
--- a/ui/src/utils/request.js
+++ b/ui/src/utils/request.js
@@ -167,6 +167,9 @@ const sourceToken = {
isCancel: (e) => {
return axios.isCancel(e)
},
+ checkExistSource: () => {
+ return source
+ },
getSource: () => {
if (!source) sourceToken.init()
return source
diff --git a/ui/src/views/auth/Login.vue b/ui/src/views/auth/Login.vue
index f513ddb672f..8e6bb2e6c49 100644
--- a/ui/src/views/auth/Login.vue
+++ b/ui/src/views/auth/Login.vue
@@ -160,6 +160,7 @@ import { ref, reactive, toRaw } from 'vue'
import { api } from '@/api'
import store from '@/store'
import { mapActions } from 'vuex'
+import { sourceToken } from '@/utils/request'
import { SERVER_MANAGER } from '@/store/mutation-types'
import TranslationMenu from '@/components/header/TranslationMenu'
@@ -186,7 +187,12 @@ export default {
this.server = this.$localStorage.get(SERVER_MANAGER) ||
this.$config.servers[0]
}
this.initForm()
- this.fetchData()
+ if (store.getters.logoutFlag) {
+ sourceToken.init()
+ this.fetchData()
+ } else {
+ this.fetchData()
+ }
},
methods: {
...mapActions(['Login', 'Logout']),
@@ -195,8 +201,12 @@ export default {
this.form = reactive({
server: (this.server.apiHost || '') + this.server.apiBase
})
- this.rules = reactive({
- username: [
+ this.rules = reactive({})
+ this.setRules()
+ },
+ setRules () {
+ if (this.customActiveKey === 'cs') {
+ this.rules.username = [
{
required: true,
message: this.$t('message.error.username'),
@@ -206,15 +216,18 @@ export default {
validator: this.handleUsernameOrEmail,
trigger: 'change'
}
- ],
- password: [
+ ]
+ this.rules.password = [
{
required: true,
message: this.$t('message.error.password'),
trigger: 'change'
}
]
- })
+ } else {
+ this.rules.username = []
+ this.rules.password = []
+ }
},
fetchData () {
api('listIdps').then(response => {
@@ -242,6 +255,7 @@ export default {
},
handleTabClick (key) {
this.customActiveKey = key
+ this.setRules()
},
handleSubmit (e) {
e.preventDefault()