forked from github/dataease
Merge branch 'dev' into pr@dev_eslint_auto_fix
This commit is contained in:
commit
a7523f1e90
@ -2,6 +2,7 @@ package io.dataease.auth.config.cas;
|
||||
|
||||
import io.dataease.auth.service.impl.ShiroServiceImpl;
|
||||
import io.dataease.commons.utils.CommonBeanFactory;
|
||||
import io.dataease.commons.utils.ServletUtils;
|
||||
import io.dataease.service.system.SystemParameterService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.shiro.util.AntPathMatcher;
|
||||
@ -17,7 +18,7 @@ import java.util.Set;
|
||||
public class CasStrategy implements UrlPatternMatcherStrategy {
|
||||
|
||||
|
||||
private static Set<String> releaseTypes = new HashSet<>();
|
||||
private static Set<String> releaseTypes = new HashSet<>();
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
@ -25,6 +26,7 @@ public class CasStrategy implements UrlPatternMatcherStrategy {
|
||||
releaseTypes.add("link");
|
||||
releaseTypes.add("doc");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(String s) {
|
||||
SystemParameterService service = CommonBeanFactory.getBean(SystemParameterService.class);
|
||||
@ -35,10 +37,14 @@ public class CasStrategy implements UrlPatternMatcherStrategy {
|
||||
if ((beginIndex = s.indexOf(serverName)) != -1) {
|
||||
s = s.substring(beginIndex + serverName.length());
|
||||
}
|
||||
if (StringUtils.equals("/", s)) return false;
|
||||
if (StringUtils.equals("/", s)) {
|
||||
if (fromLink(serverName)) return true;
|
||||
return false;
|
||||
}
|
||||
if (StringUtils.equals("/login", s)) return false;
|
||||
if (StringUtils.startsWith(s, "/cas/callBack")) return false;
|
||||
if (StringUtils.equals("/api/auth/deLogout", s)) return true;
|
||||
if (s.startsWith("/link.html")) return true;
|
||||
AntPathMatcher antPathMatcher = new AntPathMatcher();
|
||||
ShiroServiceImpl shiroService = CommonBeanFactory.getBean(ShiroServiceImpl.class);
|
||||
Map<String, String> stringStringMap = shiroService.loadFilterChainDefinitionMap();
|
||||
@ -57,4 +63,15 @@ public class CasStrategy implements UrlPatternMatcherStrategy {
|
||||
public void setPattern(String s) {
|
||||
|
||||
}
|
||||
|
||||
private Boolean fromLink(String serverName) {
|
||||
String referrer = ServletUtils.request().getHeader("referer");
|
||||
if (StringUtils.isBlank(referrer)) return false;
|
||||
int beginIndex = -1;
|
||||
if ((beginIndex = referrer.indexOf(serverName)) != -1) {
|
||||
referrer = referrer.substring(beginIndex + serverName.length());
|
||||
return referrer.startsWith("/link.html");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -9,6 +9,8 @@ import io.dataease.commons.exception.DEException;
|
||||
import io.dataease.commons.utils.DeLogUtils;
|
||||
import io.dataease.commons.utils.LogUtil;
|
||||
import io.dataease.commons.utils.ServletUtils;
|
||||
import io.dataease.exception.DataEaseException;
|
||||
import io.dataease.i18n.Translator;
|
||||
import io.dataease.plugins.common.base.domain.SysUserAssist;
|
||||
import io.dataease.plugins.config.SpringContextUtil;
|
||||
import io.dataease.plugins.xpack.dingtalk.dto.response.DingQrResult;
|
||||
@ -101,6 +103,8 @@ public class XDingtalkServer {
|
||||
sysUserService.validateExistUser(username, dingUserEntity.getName(), email);
|
||||
sysUserService.saveDingtalkCUser(dingUserEntity, email);
|
||||
sysUserEntity = authUserService.getUserByDingtalkId(username);
|
||||
} else if (sysUserEntity.getEnabled() == 0) {
|
||||
DataEaseException.throwException(Translator.get("i18n_user_is_disable"));
|
||||
}
|
||||
TokenInfo tokenInfo = TokenInfo.builder().userId(sysUserEntity.getUserId()).username(sysUserEntity.getUsername()).build();
|
||||
String realPwd = sysUserEntity.getPassword();
|
||||
|
@ -9,6 +9,8 @@ import io.dataease.commons.exception.DEException;
|
||||
import io.dataease.commons.utils.DeLogUtils;
|
||||
import io.dataease.commons.utils.LogUtil;
|
||||
import io.dataease.commons.utils.ServletUtils;
|
||||
import io.dataease.exception.DataEaseException;
|
||||
import io.dataease.i18n.Translator;
|
||||
import io.dataease.plugins.common.base.domain.SysUserAssist;
|
||||
import io.dataease.plugins.config.SpringContextUtil;
|
||||
|
||||
@ -102,6 +104,8 @@ public class XLarkServer {
|
||||
sysUserService.validateExistUser(username, larkUserInfo.getName(), email);
|
||||
sysUserService.saveLarkCUser(larkUserInfo, email);
|
||||
sysUserEntity = authUserService.getUserByLarkId(username);
|
||||
} else if (sysUserEntity.getEnabled() == 0) {
|
||||
DataEaseException.throwException(Translator.get("i18n_user_is_disable"));
|
||||
}
|
||||
TokenInfo tokenInfo = TokenInfo.builder().userId(sysUserEntity.getUserId()).username(sysUserEntity.getUsername()).build();
|
||||
String realPwd = sysUserEntity.getPassword();
|
||||
|
@ -9,6 +9,8 @@ import io.dataease.commons.exception.DEException;
|
||||
import io.dataease.commons.utils.DeLogUtils;
|
||||
import io.dataease.commons.utils.LogUtil;
|
||||
import io.dataease.commons.utils.ServletUtils;
|
||||
import io.dataease.exception.DataEaseException;
|
||||
import io.dataease.i18n.Translator;
|
||||
import io.dataease.plugins.common.base.domain.SysUserAssist;
|
||||
import io.dataease.plugins.config.SpringContextUtil;
|
||||
import io.dataease.plugins.xpack.display.dto.response.SysSettingDto;
|
||||
@ -102,6 +104,8 @@ public class XLarksuiteServer {
|
||||
sysUserService.validateExistUser(username, larkUserInfo.getName(), email);
|
||||
sysUserService.saveLarksuiteCUser(larkUserInfo, email);
|
||||
sysUserEntity = authUserService.getUserByLarksuiteId(username);
|
||||
} else if (sysUserEntity.getEnabled() == 0) {
|
||||
DataEaseException.throwException(Translator.get("i18n_user_is_disable"));
|
||||
}
|
||||
TokenInfo tokenInfo = TokenInfo.builder().userId(sysUserEntity.getUserId()).username(sysUserEntity.getUsername()).build();
|
||||
String realPwd = sysUserEntity.getPassword();
|
||||
|
@ -10,6 +10,8 @@ import io.dataease.commons.exception.DEException;
|
||||
import io.dataease.commons.utils.DeLogUtils;
|
||||
import io.dataease.commons.utils.LogUtil;
|
||||
import io.dataease.commons.utils.ServletUtils;
|
||||
import io.dataease.exception.DataEaseException;
|
||||
import io.dataease.i18n.Translator;
|
||||
import io.dataease.plugins.common.base.domain.SysUserAssist;
|
||||
import io.dataease.plugins.config.SpringContextUtil;
|
||||
import io.dataease.plugins.xpack.display.dto.response.SysSettingDto;
|
||||
@ -106,6 +108,8 @@ public class XWecomServer {
|
||||
sysUserService.validateExistUser(userId, userMap.get("name").toString(), email);
|
||||
sysUserService.saveWecomCUser(userMap, userId, email);
|
||||
sysUserEntity = authUserService.getUserByWecomId(userId);
|
||||
} else if (sysUserEntity.getEnabled() == 0) {
|
||||
DataEaseException.throwException(Translator.get("i18n_user_is_disable"));
|
||||
}
|
||||
TokenInfo tokenInfo = TokenInfo.builder().userId(sysUserEntity.getUserId()).username(sysUserEntity.getUsername()).build();
|
||||
String realPwd = sysUserEntity.getPassword();
|
||||
|
@ -689,7 +689,7 @@ public class JdbcProvider extends DefaultJdbcProvider {
|
||||
if (StringUtils.isEmpty(sqlServerConfiguration.getSchema())) {
|
||||
throw new Exception(Translator.get("i18n_schema_is_empty"));
|
||||
}
|
||||
return "SELECT TABLE_NAME FROM DATABASE.INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'DS_SCHEMA' ;"
|
||||
return "SELECT TABLE_NAME FROM \"DATABASE\".INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'DS_SCHEMA' ;"
|
||||
.replace("DATABASE", sqlServerConfiguration.getDataBase())
|
||||
.replace("DS_SCHEMA", sqlServerConfiguration.getSchema());
|
||||
case oracle:
|
||||
|
@ -1054,24 +1054,25 @@ public class DataSetTableService {
|
||||
return sql;
|
||||
}
|
||||
|
||||
public String removeVariables(String sql, String dsType) throws Exception {
|
||||
public String removeVariables(final String sql, String dsType) throws Exception {
|
||||
String tmpSql = sql;
|
||||
Pattern pattern = Pattern.compile(regex);
|
||||
Matcher matcher = pattern.matcher(sql);
|
||||
Matcher matcher = pattern.matcher(tmpSql);
|
||||
boolean hasVariables = false;
|
||||
while (matcher.find()) {
|
||||
hasVariables = true;
|
||||
sql = sql.replace(matcher.group(), SubstitutedParams);
|
||||
tmpSql = tmpSql.replace(matcher.group(), SubstitutedParams);
|
||||
}
|
||||
if (!hasVariables && !sql.contains(SubstitutedParams)) {
|
||||
return sql;
|
||||
if (!hasVariables && !tmpSql.contains(SubstitutedParams)) {
|
||||
return tmpSql;
|
||||
}
|
||||
CCJSqlParserUtil.parse(sql, parser -> parser.withSquareBracketQuotation(true));
|
||||
Statement statement = CCJSqlParserUtil.parse(sql);
|
||||
CCJSqlParserUtil.parse(tmpSql, parser -> parser.withSquareBracketQuotation(true));
|
||||
Statement statement = CCJSqlParserUtil.parse(tmpSql);
|
||||
Select select = (Select) statement;
|
||||
|
||||
if (select.getSelectBody() instanceof PlainSelect) {
|
||||
return handlePlainSelect((PlainSelect) select.getSelectBody(), select, dsType);
|
||||
}else {
|
||||
} else {
|
||||
String result = "";
|
||||
SetOperationList setOperationList = (SetOperationList) select.getSelectBody();
|
||||
for (int i = 0; i < setOperationList.getSelects().size(); i++) {
|
||||
@ -1175,15 +1176,24 @@ public class DataSetTableService {
|
||||
}
|
||||
|
||||
public Map<String, Object> getSQLPreview(DataSetTableRequest dataSetTableRequest) throws Exception {
|
||||
DataTableInfoDTO dataTableInfo = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class);
|
||||
String sql = dataTableInfo.isBase64Encryption() ? new String(java.util.Base64.getDecoder().decode(dataTableInfo.getSql())) : dataTableInfo.getSql();
|
||||
Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId());
|
||||
if (ds == null) {
|
||||
throw new Exception(Translator.get("i18n_invalid_ds"));
|
||||
}
|
||||
String tmpSql = removeVariables(sql, ds.getType());
|
||||
if (dataSetTableRequest.getMode() == 1 && (tmpSql.contains(SubstitutedParams) || tmpSql.contains(SubstitutedSql.trim()))) {
|
||||
throw new Exception(Translator.get("I18N_SQL_variable_direct_limit"));
|
||||
}
|
||||
if (tmpSql.contains(SubstitutedParams)) {
|
||||
throw new Exception(Translator.get("I18N_SQL_variable_limit"));
|
||||
}
|
||||
Provider datasourceProvider = ProviderFactory.getProvider(ds.getType());
|
||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||
datasourceRequest.setDatasource(ds);
|
||||
DataTableInfoDTO dataTableInfo = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class);
|
||||
String sql = dataTableInfo.isBase64Encryption() ? new String(java.util.Base64.getDecoder().decode(dataTableInfo.getSql())) : dataTableInfo.getSql();
|
||||
|
||||
|
||||
sql = handleVariableDefaultValue(sql, dataSetTableRequest.getSqlVariableDetails(), ds.getType());
|
||||
if (StringUtils.isEmpty(sql)) {
|
||||
DataEaseException.throwException(Translator.get("i18n_sql_not_empty"));
|
||||
|
@ -194,6 +194,7 @@ I18N_DATASOURCE_LEVEL_GRANT=Grant
|
||||
I18N_NO_PERMISSION=You do not have permission to
|
||||
I18N_PLEASE_CONCAT_ADMIN=Please contact the administrator for authorization
|
||||
I18N_SQL_variable_limit=SQL variables can only be used in where conditions
|
||||
I18N_SQL_variable_direct_limit=SQL variables can only be used for direct connection
|
||||
I18N_EMAIL_CONFIG_ERROR=Email config error
|
||||
I18N_EMAIL_HOST_ERROR=Email host can not be empty
|
||||
I18N_EMAIL_PORT_ERROR=Email port can not be empty
|
||||
|
@ -194,6 +194,7 @@ I18N_DATASOURCE_LEVEL_GRANT=\u6388\u6743
|
||||
I18N_NO_PERMISSION=\u5F53\u524D\u7528\u6237\u6CA1\u6709\u6743\u9650
|
||||
I18N_PLEASE_CONCAT_ADMIN=\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u5F00\u901A
|
||||
I18N_SQL_variable_limit=SQL \u53D8\u91CF\u53EA\u80FD\u5728 WHERE \u6761\u4EF6\u4E2D\u4F7F\u7528
|
||||
I18N_SQL_variable_direct_limit=SQL变量只能用于直连
|
||||
I18N_EMAIL_CONFIG_ERROR=\u90AE\u4EF6\u914D\u7F6E\u9519\u8BEF
|
||||
I18N_EMAIL_HOST_ERROR=\u90AE\u4EF6\u4E3B\u673A\u4E0D\u80FD\u4E3A\u7A7A
|
||||
I18N_EMAIL_PORT_ERROR=\u90AE\u4EF6\u7AEF\u53E3\u4E0D\u80FD\u4E3A\u7A7A
|
||||
|
@ -190,6 +190,7 @@ I18N_DATASOURCE_LEVEL_GRANT=\u6388\u6B0A
|
||||
I18N_NO_PERMISSION=\u7576\u524D\u7528\u6236\u6C92\u6709\u6B0A\u9650
|
||||
I18N_PLEASE_CONCAT_ADMIN=\u8ACB\u806F\u7CFB\u7BA1\u7406\u54E1\u958B\u901A
|
||||
I18N_SQL_variable_limit=SQL\u8B8A\u6578\u53EA\u80FD\u5728WHERE\u689D\u4EF6\u4E2D\u4F7F\u7528
|
||||
I18N_SQL_variable_direct_limit=SQL變數只能用於直連
|
||||
I18N_EMAIL_CONFIG_ERROR=\u90F5\u4EF6\u914D\u7F6E\u932F\u8AA4
|
||||
I18N_EMAIL_HOST_ERROR=\u90F5\u4EF6\u4E3B\u6A5F\u4E0D\u80FD\u70BA\u7A7A
|
||||
I18N_EMAIL_PORT_ERROR=\u90F5\u4EF6\u7AEF\u53E3\u4E0D\u80FD\u70BA\u7A7A
|
||||
|
@ -385,6 +385,10 @@ export default {
|
||||
this.editCompare()
|
||||
break
|
||||
case 'percent':
|
||||
// 选择占比,自动将数值格式设置为百分比并保留2位小数
|
||||
this.item.formatterCfg.type = 'percent'
|
||||
this.item.formatterCfg.decimalCount = 2
|
||||
|
||||
this.item.compareCalc.type = 'percent'
|
||||
this.$emit('onQuotaItemChange', this.item)
|
||||
break
|
||||
|
@ -382,6 +382,10 @@ export default {
|
||||
this.editCompare()
|
||||
break
|
||||
case 'percent':
|
||||
// 选择占比,自动将数值格式设置为百分比并保留2位小数
|
||||
this.item.formatterCfg.type = 'percent'
|
||||
this.item.formatterCfg.decimalCount = 2
|
||||
|
||||
this.item.compareCalc.type = 'percent'
|
||||
this.$emit('onQuotaItemChange', this.item)
|
||||
break
|
||||
|
@ -2167,9 +2167,6 @@ export default {
|
||||
if (view.type === 'line' && trigger === 'chart') {
|
||||
view.customAttr.size.lineArea = false
|
||||
}
|
||||
if (view.type === 'treemap' && trigger === 'chart') {
|
||||
view.customAttr.label.show = true
|
||||
}
|
||||
if (view.type === 'liquid' ||
|
||||
(view.type.includes('table') && view.render === 'echarts') ||
|
||||
view.type.includes('text') ||
|
||||
|
@ -702,6 +702,7 @@ export default {
|
||||
post('/dataset/table/sqlPreview', {
|
||||
dataSourceId: this.dataSource,
|
||||
type: 'sql',
|
||||
mode: parseInt(this.mode),
|
||||
sqlVariableDetails: JSON.stringify(this.variables),
|
||||
info: JSON.stringify({
|
||||
sql: Base64.encode(this.sql.trim()),
|
||||
|
Loading…
Reference in New Issue
Block a user