From 43d1bff1429bcfff78bc479628b89aa8b9db463f Mon Sep 17 00:00:00 2001 From: taojinlong Date: Wed, 8 Feb 2023 15:15:25 +0800 Subject: [PATCH 01/13] =?UTF-8?q?fix:=20SQL=E4=B8=AD=E6=9C=89=E5=B7=A6?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E5=92=8C=E5=8F=82=E6=95=B0=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E4=BC=9A=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/dataease/service/dataset/DataSetTableService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 344eb45540..fd494179ea 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -1147,8 +1147,8 @@ public class DataSetTableService { subSelect.setAlias(new Alias(rightItem.getAlias().toString(), false)); } join.setRightItem(subSelect); - joinsList.add(join); } + joinsList.add(join); } plainSelect.setJoins(joinsList); } From 55d5db7b3a83650ec6edfe6b8ccba3455a3c5f3d Mon Sep 17 00:00:00 2001 From: taojinlong Date: Thu, 9 Feb 2023 18:17:51 +0800 Subject: [PATCH 02/13] =?UTF-8?q?fix:=20=E6=8C=87=E5=AE=9A=20commons-text?= =?UTF-8?q?=20=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/pom.xml b/backend/pom.xml index ad2bbb4111..f5ece1d4af 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -119,7 +119,7 @@ org.apache.commons commons-text - [1.10.0,) + 1.10.0 commons-codec From f9401cabb2afcc9ce69f0ea3aa8a27f6f4284ed1 Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Thu, 9 Feb 2023 18:36:14 +0800 Subject: [PATCH 03/13] =?UTF-8?q?refactor:=20=E5=A2=9E=E5=8A=A0=E6=9D=83?= =?UTF-8?q?=E9=99=90=E7=AE=A1=E7=90=86api=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataease/plugins/server/XAuthServer.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java b/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java index 331d6b1c58..1cd27cad47 100644 --- a/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java @@ -16,19 +16,20 @@ import io.dataease.plugins.xpack.auth.dto.request.XpackSysAuthRequest; import io.dataease.plugins.xpack.auth.dto.response.XpackSysAuthDetail; import io.dataease.plugins.xpack.auth.dto.response.XpackSysAuthDetailDTO; import io.dataease.plugins.xpack.auth.dto.response.XpackVAuthModelDTO; +import io.dataease.plugins.xpack.auth.service.AuthXpackService; import io.dataease.service.datasource.DatasourceService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.web.bind.annotation.*; -import io.dataease.plugins.xpack.auth.service.AuthXpackService; -import springfox.documentation.annotations.ApiIgnore; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; -@ApiIgnore +@Api(tags = "权限管理") @RequestMapping("/plugin/auth") @RestController public class XAuthServer { @@ -41,6 +42,7 @@ public class XAuthServer { @RequiresPermissions("auth:read") @PostMapping("/authModels") @I18n + @ApiOperation("根据类型查询权限树") public List authModels(@RequestBody XpackBaseTreeRequest request) { AuthXpackService sysAuthService = SpringContextUtil.getBean(AuthXpackService.class); CurrentUserDto user = AuthUtils.getUser(); @@ -49,6 +51,7 @@ public class XAuthServer { @RequiresPermissions("auth:read") @PostMapping("/authDetails") + @ApiOperation("查询权限源目标映射关系") public Map> authDetails(@RequestBody XpackSysAuthRequest request) { AuthXpackService sysAuthService = SpringContextUtil.getBean(AuthXpackService.class); return sysAuthService.searchAuthDetails(request); @@ -57,6 +60,7 @@ public class XAuthServer { @RequiresPermissions("auth:read") @GetMapping("/authDetailsModel/{authType}/{direction}") @I18n + @ApiOperation("查询授权明细") public List authDetailsModel(@PathVariable String authType, @PathVariable String direction) { AuthXpackService sysAuthService = SpringContextUtil.getBean(AuthXpackService.class); List authDetails = sysAuthService.searchAuthDetailsModel(authType); @@ -72,6 +76,7 @@ public class XAuthServer { @RequiresPermissions("auth:read") @PostMapping("/authChange") + @ApiOperation("变更授权信息") public void authChange(@RequestBody XpackSysAuthRequest request) { AuthXpackService sysAuthService = SpringContextUtil.getBean(AuthXpackService.class); CurrentUserDto user = AuthUtils.getUser(); @@ -157,17 +162,17 @@ public class XAuthServer { } @GetMapping("/getDatasourceTypes") - public List getDatasourceTypes(){ - Collection activeType = datasourceService.types(); - Map activeTypeMap = activeType.stream().collect(Collectors.toMap(DataSourceType::getType, DataSourceType::getName)); - activeTypeMap.put("all","所有数据源"); + public List getDatasourceTypes() { + Collection activeType = datasourceService.types(); + Map activeTypeMap = activeType.stream().collect(Collectors.toMap(DataSourceType::getType, DataSourceType::getName)); + activeTypeMap.put("all", "所有数据源"); AuthXpackService sysAuthService = SpringContextUtil.getBean(AuthXpackService.class); List presentTypes = sysAuthService.getDatasourceTypes(); presentTypes.stream().forEach(datasourceBaseType -> { - if(activeTypeMap.get(datasourceBaseType.getType())!=null){ + if (activeTypeMap.get(datasourceBaseType.getType()) != null) { datasourceBaseType.setName(activeTypeMap.get(datasourceBaseType.getType())); } }); - return presentTypes; + return presentTypes; } } From 1b83afc800928f21a46f8dc4c82252103624a250 Mon Sep 17 00:00:00 2001 From: junjun Date: Thu, 9 Feb 2023 20:18:46 +0800 Subject: [PATCH 04/13] =?UTF-8?q?fix(=E8=A7=86=E5=9B=BE):=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8Ddoris=E4=B8=AD=E4=BD=BF=E7=94=A8case=E8=AF=AD=E6=B3=95?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/doris/DorisQueryProvider.java | 25 +++++++++++++++---- .../src/main/resources/sql/sqlTemplate.stg | 14 +++++++++-- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java b/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java index 204a3f73f0..26e12c4b12 100644 --- a/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java @@ -155,7 +155,10 @@ public class DorisQueryProvider extends QueryProvider { STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE); ST st_sql = stg.getInstanceOf("previewSql"); st_sql.add("isGroup", isGroup); - if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); + if (CollectionUtils.isNotEmpty(xFields)) { + st_sql.add("useAliasForGroup", true); + st_sql.add("groups", xFields); + } if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); String customWheres = transCustomFilterList(tableObj, fieldCustomFilter); // row permissions tree @@ -345,7 +348,10 @@ public class DorisQueryProvider extends QueryProvider { STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE); ST st_sql = stg.getInstanceOf("querySql"); - if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); + if (CollectionUtils.isNotEmpty(xFields)) { + st_sql.add("useAliasForGroup", true); + st_sql.add("groups", xFields); + } if (CollectionUtils.isNotEmpty(yFields)) st_sql.add("aggregators", yFields); if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); @@ -435,7 +441,10 @@ public class DorisQueryProvider extends QueryProvider { STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE); ST st_sql = stg.getInstanceOf("previewSql"); st_sql.add("isGroup", false); - if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); + if (CollectionUtils.isNotEmpty(xFields)) { + st_sql.add("useAliasForGroup", true); + st_sql.add("groups", xFields); + } if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); String sql = st_sql.render(); @@ -558,7 +567,10 @@ public class DorisQueryProvider extends QueryProvider { STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE); ST st_sql = stg.getInstanceOf("querySql"); - if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); + if (CollectionUtils.isNotEmpty(xFields)) { + st_sql.add("useAliasForGroup", true); + st_sql.add("groups", xFields); + } if (CollectionUtils.isNotEmpty(yFields)) st_sql.add("aggregators", yFields); if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); @@ -672,7 +684,10 @@ public class DorisQueryProvider extends QueryProvider { STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE); ST st_sql = stg.getInstanceOf("querySql"); - if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); + if (CollectionUtils.isNotEmpty(xFields)) { + st_sql.add("useAliasForGroup", true); + st_sql.add("groups", xFields); + } if (CollectionUtils.isNotEmpty(yFields)) st_sql.add("aggregators", yFields); if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); diff --git a/backend/src/main/resources/sql/sqlTemplate.stg b/backend/src/main/resources/sql/sqlTemplate.stg index 41cd934e64..9a0485cd51 100644 --- a/backend/src/main/resources/sql/sqlTemplate.stg +++ b/backend/src/main/resources/sql/sqlTemplate.stg @@ -1,4 +1,4 @@ -querySql(limitFiled, groups, aggregators, filters, orders, table, notUseAs) +querySql(limitFiled, groups, aggregators, filters, orders, table, notUseAs, useAliasForGroup) ::=<< SELECT @@ -25,8 +25,13 @@ WHERE GROUP BY + }; separator=",\n"> + + }; separator=",\n"> + + ORDER BY }; separator=",\n"> @@ -34,7 +39,7 @@ ORDER BY >> -previewSql(limitFiled, groups, aggregators, filters, orders, table, isGroup, notUseAs) +previewSql(limitFiled, groups, aggregators, filters, orders, table, isGroup, notUseAs, useAliasForGroup) ::=<< SELECT @@ -61,8 +66,13 @@ WHERE GROUP BY + }; separator=",\n"> + + }; separator=",\n"> + + ORDER BY }; separator=",\n"> From e41295c36b49b22f6efc927c1f2fd72a69de5c18 Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Fri, 10 Feb 2023 10:01:16 +0800 Subject: [PATCH 05/13] =?UTF-8?q?refactor:=20Api=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/dataease/auth/api/AuthApi.java | 5 ++-- .../io/dataease/auth/api/DynamicMenuApi.java | 4 +++- .../dataease/config/Knife4jConfiguration.java | 23 +++++++++++-------- .../dataease/plugins/server/XAuthServer.java | 2 +- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/backend/src/main/java/io/dataease/auth/api/AuthApi.java b/backend/src/main/java/io/dataease/auth/api/AuthApi.java index aeaee10e13..2b15b62e51 100644 --- a/backend/src/main/java/io/dataease/auth/api/AuthApi.java +++ b/backend/src/main/java/io/dataease/auth/api/AuthApi.java @@ -6,14 +6,13 @@ import io.dataease.auth.api.dto.LoginDto; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; -import springfox.documentation.annotations.ApiIgnore; - import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import springfox.documentation.annotations.ApiIgnore; import java.util.Map; -@Api(tags = "权限:权限管理") +@Api(tags = "登录:登录管理") @ApiSupport(order = 10) @RequestMapping("/api/auth") public interface AuthApi { diff --git a/backend/src/main/java/io/dataease/auth/api/DynamicMenuApi.java b/backend/src/main/java/io/dataease/auth/api/DynamicMenuApi.java index 790c4917bb..9b972800f7 100644 --- a/backend/src/main/java/io/dataease/auth/api/DynamicMenuApi.java +++ b/backend/src/main/java/io/dataease/auth/api/DynamicMenuApi.java @@ -8,15 +8,17 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; + import java.util.List; -@Api(tags = "权限:动态菜单") +@Api(tags = "登录:动态菜单") @ApiSupport(order = 20) @RequestMapping("/api/dynamicMenu") public interface DynamicMenuApi { /** * 根据heads中获取的token 获取username 获取对应权限的菜单 + * * @return */ @ApiOperation("查询") diff --git a/backend/src/main/java/io/dataease/config/Knife4jConfiguration.java b/backend/src/main/java/io/dataease/config/Knife4jConfiguration.java index eff1bb147e..c5b13ab877 100644 --- a/backend/src/main/java/io/dataease/config/Knife4jConfiguration.java +++ b/backend/src/main/java/io/dataease/config/Knife4jConfiguration.java @@ -7,15 +7,19 @@ import com.google.common.base.Predicate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.config.BeanPostProcessor; -import org.springframework.context.annotation.*; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration; import springfox.documentation.RequestHandler; -import springfox.documentation.builders.*; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; import springfox.documentation.oas.annotations.EnableOpenApi; import springfox.documentation.service.*; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spi.service.contexts.SecurityContext; import springfox.documentation.spring.web.plugins.Docket; + import java.util.ArrayList; import java.util.List; @@ -23,7 +27,7 @@ import java.util.List; @EnableOpenApi @Configuration @Import(BeanValidatorPluginsConfiguration.class) -public class Knife4jConfiguration implements BeanPostProcessor{ +public class Knife4jConfiguration implements BeanPostProcessor { private static final String splitor = ","; @@ -33,7 +37,6 @@ public class Knife4jConfiguration implements BeanPostProcessor{ private String version; - @Autowired public Knife4jConfiguration(OpenApiExtensionResolver openApiExtensionResolver) { this.openApiExtensionResolver = openApiExtensionResolver; @@ -41,7 +44,7 @@ public class Knife4jConfiguration implements BeanPostProcessor{ @Bean(value = "authApi") public Docket authApi() { - return defaultApi("权限管理", "io.dataease.auth"); + return defaultApi("登录管理", "io.dataease.auth"); } @Bean(value = "chartApi") @@ -69,24 +72,24 @@ public class Knife4jConfiguration implements BeanPostProcessor{ return defaultApi("系统管理", "io.dataease.controller.sys,io.dataease.plugins.server"); } - private ApiInfo apiInfo(){ + private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("DataEase") .description("人人可用的开源数据可视化分析工具") .termsOfServiceUrl("https://dataease.io") - .contact(new Contact("Dataease","https://www.fit2cloud.com/dataease/index.html","dataease@fit2cloud.com")) + .contact(new Contact("Dataease", "https://www.fit2cloud.com/dataease/index.html", "dataease@fit2cloud.com")) .version(version) .build(); } private Docket defaultApi(String groupName, String packageName) { - List securitySchemes=new ArrayList<>(); + List securitySchemes = new ArrayList<>(); securitySchemes.add(accessKey()); securitySchemes.add(signature()); List securityContexts = new ArrayList<>(); securityContexts.add(securityContext()); - Docket docket=new Docket(DocumentationType.OAS_30) + Docket docket = new Docket(DocumentationType.OAS_30) .apiInfo(apiInfo()) .groupName(groupName) .select() @@ -131,7 +134,7 @@ public class Knife4jConfiguration implements BeanPostProcessor{ return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true); } - private static Function, Boolean> handlerPackage(final String basePackage) { + private static Function, Boolean> handlerPackage(final String basePackage) { return input -> { // 循环判断匹配 for (String strPackage : basePackage.split(splitor)) { diff --git a/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java b/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java index 1cd27cad47..7a9952fa61 100644 --- a/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java @@ -29,7 +29,7 @@ import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; -@Api(tags = "权限管理") +@Api(tags = "xpack:权限管理") @RequestMapping("/plugin/auth") @RestController public class XAuthServer { From 7e01b14c859b2e5bcac618a44f417c1b7526d7cb Mon Sep 17 00:00:00 2001 From: junjun Date: Fri, 10 Feb 2023 10:02:19 +0800 Subject: [PATCH 06/13] =?UTF-8?q?fix(=E8=A7=86=E5=9B=BE):=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8Ddoris=E4=B8=AD=E4=BD=BF=E7=94=A8case=E8=AF=AD=E6=B3=95?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/main/resources/sql/sqlTemplate.stg | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/backend/src/main/resources/sql/sqlTemplate.stg b/backend/src/main/resources/sql/sqlTemplate.stg index 9a0485cd51..d24d71b521 100644 --- a/backend/src/main/resources/sql/sqlTemplate.stg +++ b/backend/src/main/resources/sql/sqlTemplate.stg @@ -23,15 +23,14 @@ FROM WHERE }; separator="\nAND "> - + GROUP BY - }; separator=",\n"> - + +GROUP BY }; separator=",\n"> - ORDER BY }; separator=",\n"> @@ -64,15 +63,14 @@ FROM WHERE }; separator="\nAND "> - + GROUP BY - }; separator=",\n"> - + +GROUP BY }; separator=",\n"> - ORDER BY }; separator=",\n"> From ad8746e1bcd07bae8f5996086947c3d831efbf96 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Fri, 10 Feb 2023 12:54:44 +0800 Subject: [PATCH 07/13] =?UTF-8?q?fix(=E7=99=BB=E5=BD=95):=20=E5=88=B7?= =?UTF-8?q?=E6=96=B0token=E5=AF=BC=E8=87=B4=E9=80=80=E5=87=BA=E7=99=BB?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/dataease/auth/filter/JWTFilter.java | 3 ++- .../io/dataease/commons/utils/TokenCacheUtils.java | 10 ++++++++++ backend/src/main/resources/ehcache/ehcache.xml | 12 ++++++++++++ frontend/src/utils/request.js | 3 ++- 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java b/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java index 973b0fced2..24ca87c8d6 100644 --- a/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java +++ b/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java @@ -66,7 +66,7 @@ public class JWTFilter extends BasicHttpAuthenticationFilter { if (StringUtils.startsWith(authorization, "Basic")) { return false; } - if (!TokenCacheUtils.validate(authorization)) { + if (!TokenCacheUtils.validate(authorization) && TokenCacheUtils.validateDelay(authorization)) { throw new AuthenticationException(expireMessage); } // 当没有出现登录超时 且需要刷新token 则执行刷新token @@ -75,6 +75,7 @@ public class JWTFilter extends BasicHttpAuthenticationFilter { throw new AuthenticationException(expireMessage); } if (JWTUtils.needRefresh(authorization)) { + TokenCacheUtils.addWithTtl(authorization, 1L); TokenCacheUtils.remove(authorization); authorization = refreshToken(request, response); } diff --git a/backend/src/main/java/io/dataease/commons/utils/TokenCacheUtils.java b/backend/src/main/java/io/dataease/commons/utils/TokenCacheUtils.java index e17f293b51..338adbf2da 100644 --- a/backend/src/main/java/io/dataease/commons/utils/TokenCacheUtils.java +++ b/backend/src/main/java/io/dataease/commons/utils/TokenCacheUtils.java @@ -7,6 +7,7 @@ import org.apache.commons.lang3.StringUtils; public class TokenCacheUtils { private static final String KEY = "sys_token_store"; + private static final String DELAY_KEY = "sys_token_store_delay"; public static void add(String token, Long userId) { CacheUtils.put(KEY, token, userId, null, null); @@ -25,4 +26,13 @@ public class TokenCacheUtils { Object sys_token_store = CacheUtils.get(KEY, token); return ObjectUtils.isNotEmpty(sys_token_store) && StringUtils.isNotBlank(sys_token_store.toString()) && userId == Long.parseLong(sys_token_store.toString()); } + + public static void addWithTtl(String token, Long userId) { + CacheUtils.put(DELAY_KEY, token, userId, 3, 5); + } + + public static boolean validateDelay(String token) { + Object tokenObj = CacheUtils.get(DELAY_KEY, token); + return ObjectUtils.isNotEmpty(tokenObj) && StringUtils.isNotBlank(tokenObj.toString()); + } } diff --git a/backend/src/main/resources/ehcache/ehcache.xml b/backend/src/main/resources/ehcache/ehcache.xml index c1fedd7f25..f8d8591b20 100644 --- a/backend/src/main/resources/ehcache/ehcache.xml +++ b/backend/src/main/resources/ehcache/ehcache.xml @@ -279,5 +279,17 @@ diskPersistent="false" /> + + \ No newline at end of file diff --git a/frontend/src/utils/request.js b/frontend/src/utils/request.js index 78536360fc..477c20817c 100644 --- a/frontend/src/utils/request.js +++ b/frontend/src/utils/request.js @@ -1,7 +1,7 @@ import axios from 'axios' import store from '@/store' import { $alert, $error } from './message' -import { getToken, getIdToken } from '@/utils/auth' +import { getToken, getIdToken, setToken } from '@/utils/auth' import Config from '@/settings' import i18n from '@/lang' import { tryShowLoading, tryHideLoading } from './loading' @@ -157,6 +157,7 @@ const checkAuth = response => { // token到期后自动续命 刷新token if (response.headers[RefreshTokenKey]) { const refreshToken = response.headers[RefreshTokenKey] + setToken(refreshToken) store.dispatch('user/refreshToken', refreshToken) } From 44978fad4fc98e7001c719551bdbfe38b7b3ee57 Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Fri, 10 Feb 2023 14:12:02 +0800 Subject: [PATCH 08/13] =?UTF-8?q?refactor:=20Api=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/io/dataease/plugins/server/XAuthServer.java | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java b/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java index 7a9952fa61..9c1e1efbcd 100644 --- a/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java @@ -162,6 +162,7 @@ public class XAuthServer { } @GetMapping("/getDatasourceTypes") + @ApiOperation("查询授权的数据类型") public List getDatasourceTypes() { Collection activeType = datasourceService.types(); Map activeTypeMap = activeType.stream().collect(Collectors.toMap(DataSourceType::getType, DataSourceType::getName)); From 67d31c839da8190a3a5e285ed42a73978d500524 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Mon, 13 Feb 2023 11:15:28 +0800 Subject: [PATCH 09/13] =?UTF-8?q?fix(=E7=99=BB=E5=BD=95):=20=E5=88=B7?= =?UTF-8?q?=E6=96=B0token=E5=AF=BC=E8=87=B4=E7=94=A8=E6=88=B7=E9=A2=91?= =?UTF-8?q?=E7=B9=81=E6=8E=89=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/main/java/io/dataease/auth/filter/JWTFilter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java b/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java index 24ca87c8d6..e5bd636789 100644 --- a/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java +++ b/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java @@ -66,7 +66,7 @@ public class JWTFilter extends BasicHttpAuthenticationFilter { if (StringUtils.startsWith(authorization, "Basic")) { return false; } - if (!TokenCacheUtils.validate(authorization) && TokenCacheUtils.validateDelay(authorization)) { + if (!TokenCacheUtils.validate(authorization) && !TokenCacheUtils.validateDelay(authorization)) { throw new AuthenticationException(expireMessage); } // 当没有出现登录超时 且需要刷新token 则执行刷新token From 82547eb12d47a64887691d201aab5875c288aa0a Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Mon, 13 Feb 2023 14:00:33 +0800 Subject: [PATCH 10/13] =?UTF-8?q?fix(=E8=A7=86=E5=9B=BE):=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=88=86=E9=A1=B5=E6=98=8E=E7=BB=86=E8=A1=A8=EF=BC=8C?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E8=AE=BE=E7=BD=AE=E8=B7=B3=E8=BD=AC=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=EF=BC=8C=E5=8F=AA=E6=9C=89=E7=AC=AC=E4=B8=80=E9=A1=B5?= =?UTF-8?q?=E7=94=9F=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98=20#4494?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/chart/components/ChartComponentS2.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/views/chart/components/ChartComponentS2.vue b/frontend/src/views/chart/components/ChartComponentS2.vue index 63d8bbd690..deb834afdc 100644 --- a/frontend/src/views/chart/components/ChartComponentS2.vue +++ b/frontend/src/views/chart/components/ChartComponentS2.vue @@ -67,8 +67,8 @@ > {{ $t('chart.total') }} {{ - (chart.datasetMode === 0 && !not_support_page_dataset.includes(chart.datasourceType)) ? chart.totalItems : ((chart.data && chart.data.tableRow) ? chart.data.tableRow.length : 0) - }} + (chart.datasetMode === 0 && !not_support_page_dataset.includes(chart.datasourceType)) ? chart.totalItems : ((chart.data && chart.data.tableRow) ? chart.data.tableRow.length : 0) + }} {{ $t('chart.items') }} Date: Tue, 14 Feb 2023 11:40:58 +0800 Subject: [PATCH 11/13] =?UTF-8?q?feat:=20=E6=A0=B9=E6=8D=AEdataease.proper?= =?UTF-8?q?ties=E9=85=8D=E7=BD=AE=E9=87=8C=E7=9A=84mysql=E9=93=BE=E6=8E=A5?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=9D=A5=E6=9B=B4=E6=96=B0demo=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=BA=90=E7=9A=84=E9=85=8D=E7=BD=AE=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/DataSourceInitStartListener.java | 1 + .../service/datasource/DatasourceService.java | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/backend/src/main/java/io/dataease/listener/DataSourceInitStartListener.java b/backend/src/main/java/io/dataease/listener/DataSourceInitStartListener.java index fed96e7708..157c2f97aa 100644 --- a/backend/src/main/java/io/dataease/listener/DataSourceInitStartListener.java +++ b/backend/src/main/java/io/dataease/listener/DataSourceInitStartListener.java @@ -26,6 +26,7 @@ public class DataSourceInitStartListener implements ApplicationListener Date: Tue, 14 Feb 2023 14:08:37 +0800 Subject: [PATCH 12/13] =?UTF-8?q?feat:=20=E5=8D=87=E7=BA=A7=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7=E5=88=B01.18.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/pom.xml | 8 ++++---- backend/src/main/resources/db/migration/V50__1.18.3.sql | 4 ++++ frontend/package.json | 2 +- frontend/pom.xml | 2 +- mobile/pom.xml | 2 +- pom.xml | 2 +- 6 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 backend/src/main/resources/db/migration/V50__1.18.3.sql diff --git a/backend/pom.xml b/backend/pom.xml index f5ece1d4af..039930587b 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -5,7 +5,7 @@ dataease-server io.dataease - 1.18.2 + 1.18.3 4.0.0 @@ -204,7 +204,7 @@ io.dataease dataease-plugin-interface - 1.18.2 + 1.18.3 guava @@ -215,12 +215,12 @@ io.dataease dataease-plugin-view - 1.18.2 + 1.18.3 io.dataease dataease-plugin-datasource - 1.18.2 + 1.18.3 diff --git a/backend/src/main/resources/db/migration/V50__1.18.3.sql b/backend/src/main/resources/db/migration/V50__1.18.3.sql new file mode 100644 index 0000000000..f9f320fd3f --- /dev/null +++ b/backend/src/main/resources/db/migration/V50__1.18.3.sql @@ -0,0 +1,4 @@ +UPDATE `my_plugin` +SET `version` = '1.18.3' +where `plugin_id` > 0 + and `version` = '1.18.2'; diff --git a/frontend/package.json b/frontend/package.json index f312476501..3816f0a7ab 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "dataease", - "version": "1.18.2", + "version": "1.18.3", "description": "dataease front", "private": true, "scripts": { diff --git a/frontend/pom.xml b/frontend/pom.xml index d49c6b1aa2..123e82483a 100644 --- a/frontend/pom.xml +++ b/frontend/pom.xml @@ -6,7 +6,7 @@ dataease-server io.dataease - 1.18.2 + 1.18.3 4.0.0 diff --git a/mobile/pom.xml b/mobile/pom.xml index c565ce5e97..063e794c90 100644 --- a/mobile/pom.xml +++ b/mobile/pom.xml @@ -6,7 +6,7 @@ dataease-server io.dataease - 1.18.2 + 1.18.3 4.0.0 diff --git a/pom.xml b/pom.xml index 0fcfa4d2bd..e99f15476b 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 io.dataease dataease-server - 1.18.2 + 1.18.3 pom From fc60ba441b56bb419bef9e45d37705ceb4c6a8b9 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Wed, 15 Feb 2023 11:11:04 +0800 Subject: [PATCH 13/13] =?UTF-8?q?feat:=20=E6=A0=B9=E6=8D=AEdataease.proper?= =?UTF-8?q?ties=E9=85=8D=E7=BD=AE=E9=87=8C=E7=9A=84mysql=E9=93=BE=E6=8E=A5?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=9D=A5=E6=9B=B4=E6=96=B0demo=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=BA=90=E7=9A=84=E9=85=8D=E7=BD=AE=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/dataease/service/datasource/DatasourceService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java index cd8c115e50..80474a31b3 100644 --- a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java +++ b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java @@ -663,7 +663,7 @@ public class DatasourceService { mysqlConfiguration.setUsername(env.getProperty("spring.datasource.username")); mysqlConfiguration.setPassword(env.getProperty("spring.datasource.password")); datasource.setConfiguration(new Gson().toJson(mysqlConfiguration)); - datasourceMapper.updateByPrimaryKey(datasource); + datasourceMapper.updateByPrimaryKeyWithBLOBs(datasource); } }