| 460 | }, |
| 461 | |
| 462 | Logout ({ commit, state }) { |
| 463 | return new Promise((resolve) => { |
| 464 | var cloudianUrl = null |
| 465 | if (state.cloudian.url && state.cloudian.enabled) { |
| 466 | cloudianUrl = state.cloudian.url + 'logout.htm?redirect=' + encodeURIComponent(window.location.href) |
| 467 | } |
| 468 | |
| 469 | commit('SET_TOKEN', '') |
| 470 | commit('SET_APIS', {}) |
| 471 | commit('SET_PROJECT', {}) |
| 472 | commit('SET_HEADER_NOTICES', []) |
| 473 | commit('SET_FEATURES', {}) |
| 474 | commit('SET_LDAP', {}) |
| 475 | commit('SET_CLOUDIAN', {}) |
| 476 | commit('RESET_THEME') |
| 477 | commit('SET_DOMAIN_STORE', {}) |
| 478 | commit('SET_LOGOUT_FLAG', true) |
| 479 | commit('SET_2FA_ENABLED', false) |
| 480 | commit('SET_2FA_PROVIDER', '') |
| 481 | commit('SET_2FA_ISSUER', '') |
| 482 | commit('SET_LOGIN_FLAG', false) |
| 483 | commit('SET_MS_ID', '') |
| 484 | vueProps.$localStorage.remove(CURRENT_PROJECT) |
| 485 | vueProps.$localStorage.remove(ACCESS_TOKEN) |
| 486 | vueProps.$localStorage.remove(HEADER_NOTICES) |
| 487 | |
| 488 | logout(state.token).then(() => { |
| 489 | message.destroy() |
| 490 | if (cloudianUrl) { |
| 491 | window.location.href = cloudianUrl |
| 492 | } else { |
| 493 | resolve() |
| 494 | } |
| 495 | }).catch(() => { |
| 496 | resolve() |
| 497 | }).finally(() => { |
| 498 | const paths = ['/', '/client'] |
| 499 | const hostname = window.location.hostname |
| 500 | const domains = [undefined, hostname, `.${hostname}`] |
| 501 | Object.keys(Cookies.get()).forEach(cookieName => { |
| 502 | paths.forEach(path => { |
| 503 | domains.forEach(domain => { |
| 504 | const options = { path } |
| 505 | if (domain) options.domain = domain |
| 506 | Cookies.remove(cookieName, options) |
| 507 | }) |
| 508 | }) |
| 509 | }) |
| 510 | }) |
| 511 | }) |
| 512 | }, |
| 513 | AddHeaderNotice ({ commit }, noticeJson) { |
| 514 | if (!noticeJson || !noticeJson.title) { |
| 515 | return |