From ee323058161ea4ab7a556590529b1fbbc8fb92e7 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Wed, 26 Oct 2022 19:24:19 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix(=E7=99=BB=E5=87=BA):=20oidc=E5=AE=95?= =?UTF-8?q?=E6=9C=BA=E5=90=8E=E6=97=A0=E6=B3=95=E9=80=80=E5=87=BA=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/dataease/auth/server/AuthServer.java | 25 +++++++++++++------ frontend/src/api/user.js | 6 +++-- frontend/src/lang/en.js | 4 +++ frontend/src/lang/tw.js | 4 +++ frontend/src/lang/zh.js | 4 +++ frontend/src/store/modules/user.js | 23 +++++++++++++++++ 6 files changed, 57 insertions(+), 9 deletions(-) diff --git a/backend/src/main/java/io/dataease/auth/server/AuthServer.java b/backend/src/main/java/io/dataease/auth/server/AuthServer.java index ac43dc69ce..e86731d06f 100644 --- a/backend/src/main/java/io/dataease/auth/server/AuthServer.java +++ b/backend/src/main/java/io/dataease/auth/server/AuthServer.java @@ -12,6 +12,7 @@ import io.dataease.auth.service.AuthUserService; import io.dataease.auth.util.JWTUtils; import io.dataease.auth.util.RsaUtil; import io.dataease.commons.constants.SysLogConstants; +import io.dataease.commons.exception.DEException; import io.dataease.commons.utils.*; import io.dataease.controller.sys.request.LdapAddRequest; import io.dataease.exception.DataEaseException; @@ -240,8 +241,13 @@ public class AuthServer implements AuthApi { HttpServletRequest request = ServletUtils.request(); String idToken = request.getHeader("IdToken"); if (StringUtils.isNotBlank(idToken)) { - OidcXpackService oidcXpackService = SpringContextUtil.getBean(OidcXpackService.class); - oidcXpackService.logout(idToken); + try { + OidcXpackService oidcXpackService = SpringContextUtil.getBean(OidcXpackService.class); + oidcXpackService.logout(idToken); + } catch (Exception e) { + LogUtil.error(e.getMessage(), e); + DEException.throwException("oidc_logout_error"); + } } } @@ -253,11 +259,16 @@ public class AuthServer implements AuthApi { String result = null; Integer defaultLoginType = systemParameterService.defaultLoginType(); if (defaultLoginType == 3 && isOpenCas()) { - HttpServletRequest request = ServletUtils.request(); - HttpSession session = request.getSession(); - session.invalidate(); - CasXpackService casXpackService = SpringContextUtil.getBean(CasXpackService.class); - result = casXpackService.logout(); + try { + HttpServletRequest request = ServletUtils.request(); + HttpSession session = request.getSession(); + session.invalidate(); + CasXpackService casXpackService = SpringContextUtil.getBean(CasXpackService.class); + result = casXpackService.logout(); + } catch (Exception e) { + LogUtil.error(e.getMessage(), e); + DEException.throwException("cas_logout_error"); + } } try { Long userId = JWTUtils.tokenInfoByToken(token).getUserId(); diff --git a/frontend/src/api/user.js b/frontend/src/api/user.js index 32d2067307..f7b0df9167 100644 --- a/frontend/src/api/user.js +++ b/frontend/src/api/user.js @@ -18,14 +18,16 @@ export function getInfo(token) { export function logout() { return request({ url: '/api/auth/logout', - method: 'post' + method: 'post', + hideMsg: true }) } export function deLogout() { return request({ url: '/api/auth/deLogout', - method: 'post' + method: 'post', + hideMsg: true }) } diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 9b9d4d14b0..2b396f403a 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -2626,5 +2626,9 @@ export default { apply_logs: 'Apply logs', app_group_delete_tips: 'Are you sure to delete this application category?', app_group_delete_content: 'After deletion, all application templates in this category will also be deleted.' + }, + logout: { + oidc_logout_error: 'OIDC failed to exit, do you continue to exit DataEase?', + cas_logout_error: 'CAS服务异常,请联系管理员!' } } diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index ad78066c42..3e41d495c2 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -2627,5 +2627,9 @@ export default { apply_logs: '應用記錄', app_group_delete_tips: '確定刪除該應用分類嗎?', app_group_delete_content: '刪除後,該分類中所有的應用模闆也將被刪除。' + }, + logout: { + oidc_logout_error: 'OIDC退出失敗,是否繼續退出DataEase?', + cas_logout_error: 'CAS服務異常,請聯系管理員!' } } diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 009725ad24..86e6efae90 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -2627,5 +2627,9 @@ export default { apply_logs: '应用记录', app_group_delete_tips: '确定删除该应用分类吗?', app_group_delete_content: '删除后,该分类中所有的应用模板也将被删除。' + }, + logout: { + oidc_logout_error: 'OIDC退出失败,是否继续退出DataEase?', + cas_logout_error: 'The CAS service is abnormal, please contact the administrator!' } } diff --git a/frontend/src/store/modules/user.js b/frontend/src/store/modules/user.js index a14a2db029..5d8795d358 100644 --- a/frontend/src/store/modules/user.js +++ b/frontend/src/store/modules/user.js @@ -6,6 +6,7 @@ import { getLanguage } from '@/lang/index' import Cookies from 'js-cookie' import router from '@/router' import i18n from '@/lang' +import { $alert, $confirm } from '@/utils/message' const getDefaultState = () => { return { token: getToken(), @@ -146,6 +147,28 @@ const actions = { resolve(res.data) }).catch(error => { reject(error) + if (error?.response?.data?.message) { + if (error.response.data.message === ('oidc_logout_error')) { + const message = i18n.t('logout.' + error.response.data.message) + $confirm(message, () => { + removeToken() // must remove token first + resetRouter() + commit('RESET_STATE') + window.location.href = '/' + }, { + confirmButtonText: i18n.t('commons.confirm') + }) + } + if (error.response.data.message === ('cas_logout_error')) { + const message = i18n.t('logout.' + error.response.data.message) + $alert(message, () => { + + }, { + confirmButtonText: i18n.t('commons.confirm'), + showClose: false + }) + } + } }) }) }, From 7f882b115986905c092b505ee35ca6ff9dcf5783 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw <67260074+fit2cloud-chenyw@users.noreply.github.com> Date: Thu, 27 Oct 2022 16:04:08 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20cas=E6=9C=8D=E5=8A=A1=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E4=B8=AD=E6=96=87=E6=96=87=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/lang/zh.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 86e6efae90..851565d647 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -2630,6 +2630,6 @@ export default { }, logout: { oidc_logout_error: 'OIDC退出失败,是否继续退出DataEase?', - cas_logout_error: 'The CAS service is abnormal, please contact the administrator!' + cas_logout_error: 'CAS服务异常,请联系管理员!' } } From 2443b0177deeb062d058e6490a0c4f89dab2ca9c Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw <67260074+fit2cloud-chenyw@users.noreply.github.com> Date: Thu, 27 Oct 2022 16:04:53 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20cas=E6=9C=8D=E5=8A=A1=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E8=8B=B1=E6=96=87=E6=96=87=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/lang/en.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 2b396f403a..d3a53cec82 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -2629,6 +2629,6 @@ export default { }, logout: { oidc_logout_error: 'OIDC failed to exit, do you continue to exit DataEase?', - cas_logout_error: 'CAS服务异常,请联系管理员!' + cas_logout_error: 'The CAS service is abnormal, please contact the administrator!' } }