diff --git a/backend/src/main/java/io/dataease/plugins/server/SSOServer.java b/backend/src/main/java/io/dataease/plugins/server/SSOServer.java index a102174941..9ca599e40b 100644 --- a/backend/src/main/java/io/dataease/plugins/server/SSOServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/SSOServer.java @@ -1,5 +1,7 @@ package io.dataease.plugins.server; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -39,39 +41,57 @@ public class SSOServer { @GetMapping("/callBack") public ModelAndView callBack(@RequestParam("code") String code, @RequestParam("state") String state) { - Map beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((OidcXpackService.class)); - if(beansOfType.keySet().size() == 0) { - DEException.throwException("缺少oidc插件"); - } - OidcXpackService oidcXpackService = SpringContextUtil.getBean(OidcXpackService.class); - Boolean suuportOIDC = oidcXpackService.isSuuportOIDC(); - if (!suuportOIDC) { - DEException.throwException("未开启oidc"); - } - Map config = config(oidcXpackService); - SSOToken ssoToken = oidcXpackService.requestSsoToken(config, code, state); - - SSOUserInfo ssoUserInfo = oidcXpackService.requestUserInfo(config, ssoToken.getAccessToken()); - SysUserEntity sysUserEntity = authUserService.getUserBySub(ssoUserInfo.getSub()); - if(null == sysUserEntity){ - sysUserService.validateExistUser(ssoUserInfo.getUsername(), ssoUserInfo.getEmail()); - sysUserService.saveOIDCUser(ssoUserInfo); - sysUserEntity = authUserService.getUserBySub(ssoUserInfo.getSub()); - } - TokenInfo tokenInfo = TokenInfo.builder().userId(sysUserEntity.getUserId()).username(sysUserEntity.getUsername()).build(); - String realPwd = CodingUtil.md5(sysUserService.defaultPWD()); - String token = JWTUtils.sign(tokenInfo, realPwd); - ServletUtils.setToken(token); - HttpServletResponse response = ServletUtils.response(); - - Cookie cookie_token = new Cookie("Authorization", token);cookie_token.setPath("/"); - Cookie cookie_id_token = new Cookie("IdToken", ssoToken.getIdToken());cookie_id_token.setPath("/"); - Cookie cookie_ac_token = new Cookie("AccessToken", ssoToken.getAccessToken());cookie_ac_token.setPath("/"); + ModelAndView modelAndView = new ModelAndView("redirect:/"); + HttpServletResponse response = ServletUtils.response(); - response.addCookie(cookie_token); - response.addCookie(cookie_id_token); - response.addCookie(cookie_ac_token); - ModelAndView modelAndView = new ModelAndView("redirect:/"); + try { + Map beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((OidcXpackService.class)); + if(beansOfType.keySet().size() == 0) { + DEException.throwException("缺少oidc插件"); + } + OidcXpackService oidcXpackService = SpringContextUtil.getBean(OidcXpackService.class); + Boolean suuportOIDC = oidcXpackService.isSuuportOIDC(); + if (!suuportOIDC) { + DEException.throwException("未开启oidc"); + } + Map config = config(oidcXpackService); + SSOToken ssoToken = oidcXpackService.requestSsoToken(config, code, state); + + SSOUserInfo ssoUserInfo = oidcXpackService.requestUserInfo(config, ssoToken.getAccessToken()); + SysUserEntity sysUserEntity = authUserService.getUserBySub(ssoUserInfo.getSub()); + if(null == sysUserEntity){ + sysUserService.validateExistUser(ssoUserInfo.getUsername(), ssoUserInfo.getEmail()); + sysUserService.saveOIDCUser(ssoUserInfo); + sysUserEntity = authUserService.getUserBySub(ssoUserInfo.getSub()); + } + TokenInfo tokenInfo = TokenInfo.builder().userId(sysUserEntity.getUserId()).username(sysUserEntity.getUsername()).build(); + String realPwd = CodingUtil.md5(sysUserService.defaultPWD()); + String token = JWTUtils.sign(tokenInfo, realPwd); + ServletUtils.setToken(token); + + + Cookie cookie_token = new Cookie("Authorization", token);cookie_token.setPath("/"); + Cookie cookie_id_token = new Cookie("IdToken", ssoToken.getIdToken());cookie_id_token.setPath("/"); + Cookie cookie_ac_token = new Cookie("AccessToken", ssoToken.getAccessToken());cookie_ac_token.setPath("/"); + + response.addCookie(cookie_token); + response.addCookie(cookie_id_token); + response.addCookie(cookie_ac_token); + }catch(Exception e) { + String msg; + try { + msg = URLEncoder.encode(e.getMessage(), "UTF-8"); + Cookie cookie_error = new Cookie("OidcError", msg); + cookie_error.setPath("/"); + response.addCookie(cookie_error); + return modelAndView; + } catch (UnsupportedEncodingException e1) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + } return modelAndView; } private Map config(OidcXpackService oidcXpackService) { diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 5241f202bc..cd37a4b8c3 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -927,7 +927,8 @@ export default { liquid_shape_diamond: 'Diamond', liquid_shape_triangle: 'Triangle', liquid_shape_pin: 'Pin', - liquid_shape_rect: 'Rect' + liquid_shape_rect: 'Rect', + dimension_or_quota: 'Dimension Or Quota' }, dataset: { sheet_warn: 'There are multiple sheet pages, and the first one is extracted by default', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index eda115e0d0..eb23430481 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -928,7 +928,8 @@ export default { liquid_shape_diamond: '菱形', liquid_shape_triangle: '三角形', liquid_shape_pin: '氣球', - liquid_shape_rect: '矩形' + liquid_shape_rect: '矩形', + dimension_or_quota: '維度或指標' }, dataset: { sheet_warn: '有多個 Sheet 頁,默認抽取第一個', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index e8356d5761..e9a66cf889 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -928,7 +928,8 @@ export default { liquid_shape_diamond: '菱形', liquid_shape_triangle: '三角形', liquid_shape_pin: '气球', - liquid_shape_rect: '矩形' + liquid_shape_rect: '矩形', + dimension_or_quota: '维度或指标' }, dataset: { sheet_warn: '有多个 Sheet 页,默认抽取第一个', diff --git a/frontend/src/views/chart/view/ChartEdit.vue b/frontend/src/views/chart/view/ChartEdit.vue index 37773650d7..e95665f5a9 100644 --- a/frontend/src/views/chart/view/ChartEdit.vue +++ b/frontend/src/views/chart/view/ChartEdit.vue @@ -275,7 +275,8 @@ {{ $t('chart.area') }} {{ $t('chart.drag_block_treemap_label') }} / - {{ $t('chart.dimension') }} + {{ $t('chart.dimension') }} + {{ $t('chart.dimension_or_quota') }} { if (valid) { this.loading = true @@ -159,6 +161,7 @@ export default { }, changeLoginType(val) { if (val !== 2) return + Cookies.remove('OidcError') this.$nextTick(() => { })