提交 236c7616 authored 作者: taojinlong's avatar taojinlong

Merge branch 'dev' of github.com:dataease/dataease into dev

package io.dataease.plugins.server; package io.dataease.plugins.server;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -39,39 +41,57 @@ public class SSOServer { ...@@ -39,39 +41,57 @@ public class SSOServer {
@GetMapping("/callBack") @GetMapping("/callBack")
public ModelAndView callBack(@RequestParam("code") String code, @RequestParam("state") String state) { public ModelAndView callBack(@RequestParam("code") String code, @RequestParam("state") String state) {
Map<String, OidcXpackService> beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((OidcXpackService.class)); ModelAndView modelAndView = new ModelAndView("redirect:/");
if(beansOfType.keySet().size() == 0) { HttpServletResponse response = ServletUtils.response();
DEException.throwException("缺少oidc插件");
}
OidcXpackService oidcXpackService = SpringContextUtil.getBean(OidcXpackService.class);
Boolean suuportOIDC = oidcXpackService.isSuuportOIDC();
if (!suuportOIDC) {
DEException.throwException("未开启oidc");
}
Map<String, String> 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("/");
response.addCookie(cookie_token); try {
response.addCookie(cookie_id_token); Map<String, OidcXpackService> beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((OidcXpackService.class));
response.addCookie(cookie_ac_token); if(beansOfType.keySet().size() == 0) {
ModelAndView modelAndView = new ModelAndView("redirect:/"); DEException.throwException("缺少oidc插件");
}
OidcXpackService oidcXpackService = SpringContextUtil.getBean(OidcXpackService.class);
Boolean suuportOIDC = oidcXpackService.isSuuportOIDC();
if (!suuportOIDC) {
DEException.throwException("未开启oidc");
}
Map<String, String> 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; return modelAndView;
} }
private Map<String, String> config(OidcXpackService oidcXpackService) { private Map<String, String> config(OidcXpackService oidcXpackService) {
......
...@@ -927,7 +927,8 @@ export default { ...@@ -927,7 +927,8 @@ export default {
liquid_shape_diamond: 'Diamond', liquid_shape_diamond: 'Diamond',
liquid_shape_triangle: 'Triangle', liquid_shape_triangle: 'Triangle',
liquid_shape_pin: 'Pin', liquid_shape_pin: 'Pin',
liquid_shape_rect: 'Rect' liquid_shape_rect: 'Rect',
dimension_or_quota: 'Dimension Or Quota'
}, },
dataset: { dataset: {
sheet_warn: 'There are multiple sheet pages, and the first one is extracted by default', sheet_warn: 'There are multiple sheet pages, and the first one is extracted by default',
......
...@@ -928,7 +928,8 @@ export default { ...@@ -928,7 +928,8 @@ export default {
liquid_shape_diamond: '菱形', liquid_shape_diamond: '菱形',
liquid_shape_triangle: '三角形', liquid_shape_triangle: '三角形',
liquid_shape_pin: '氣球', liquid_shape_pin: '氣球',
liquid_shape_rect: '矩形' liquid_shape_rect: '矩形',
dimension_or_quota: '維度或指標'
}, },
dataset: { dataset: {
sheet_warn: '有多個 Sheet 頁,默認抽取第一個', sheet_warn: '有多個 Sheet 頁,默認抽取第一個',
......
...@@ -928,7 +928,8 @@ export default { ...@@ -928,7 +928,8 @@ export default {
liquid_shape_diamond: '菱形', liquid_shape_diamond: '菱形',
liquid_shape_triangle: '三角形', liquid_shape_triangle: '三角形',
liquid_shape_pin: '气球', liquid_shape_pin: '气球',
liquid_shape_rect: '矩形' liquid_shape_rect: '矩形',
dimension_or_quota: '维度或指标'
}, },
dataset: { dataset: {
sheet_warn: '有多个 Sheet 页,默认抽取第一个', sheet_warn: '有多个 Sheet 页,默认抽取第一个',
......
...@@ -275,7 +275,8 @@ ...@@ -275,7 +275,8 @@
<span v-else-if="view.type && view.type === 'map'">{{ $t('chart.area') }}</span> <span v-else-if="view.type && view.type === 'map'">{{ $t('chart.area') }}</span>
<span v-else-if="view.type && view.type.includes('treemap')">{{ $t('chart.drag_block_treemap_label') }}</span> <span v-else-if="view.type && view.type.includes('treemap')">{{ $t('chart.drag_block_treemap_label') }}</span>
/ /
<span>{{ $t('chart.dimension') }}</span> <span v-if="view.type && view.type !== 'table-info'">{{ $t('chart.dimension') }}</span>
<span v-else-if="view.type && view.type === 'table-info'">{{ $t('chart.dimension_or_quota') }}</span>
</span> </span>
<draggable <draggable
v-model="view.xaxis" v-model="view.xaxis"
......
...@@ -66,6 +66,7 @@ import { encrypt } from '@/utils/rsaEncrypt' ...@@ -66,6 +66,7 @@ import { encrypt } from '@/utils/rsaEncrypt'
import { ldapStatus, oidcStatus } from '@/api/user' import { ldapStatus, oidcStatus } from '@/api/user'
import { getSysUI } from '@/utils/auth' import { getSysUI } from '@/utils/auth'
import PluginCom from '@/views/system/plugin/PluginCom' import PluginCom from '@/views/system/plugin/PluginCom'
import Cookies from 'js-cookie'
export default { export default {
name: 'Login', name: 'Login',
components: { PluginCom }, components: { PluginCom },
...@@ -92,7 +93,7 @@ export default { ...@@ -92,7 +93,7 @@ export default {
}, },
computed: { computed: {
msg() { msg() {
return this.$store.state.user.loginMsg return this.$store.state.user.loginMsg || Cookies.get('OidcError')
} }
}, },
watch: { watch: {
...@@ -137,6 +138,7 @@ export default { ...@@ -137,6 +138,7 @@ export default {
} }
}, },
handleLogin() { handleLogin() {
Cookies.remove('OidcError')
this.$refs.loginForm.validate(valid => { this.$refs.loginForm.validate(valid => {
if (valid) { if (valid) {
this.loading = true this.loading = true
...@@ -159,6 +161,7 @@ export default { ...@@ -159,6 +161,7 @@ export default {
}, },
changeLoginType(val) { changeLoginType(val) {
if (val !== 2) return if (val !== 2) return
Cookies.remove('OidcError')
this.$nextTick(() => { this.$nextTick(() => {
}) })
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论