This is an automated email from the ASF dual-hosted git repository.
hefengen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new 95f0f11895 [type:feat]Auth adapts to namespace transformation (#5667)
95f0f11895 is described below
commit 95f0f11895471eea8b4a003adcaab591cb2ce496
Author: xcsnx <[email protected]>
AuthorDate: Sat Sep 21 22:47:44 2024 +0800
[type:feat]Auth adapts to namespace transformation (#5667)
* auth
* reset
* fix cr
* fix
---------
Co-authored-by: ‘xcsnx’ <‘[email protected]’>
---
db/init/mysql/schema.sql | 4 +-
db/init/ob/schema.sql | 4 +-
db/init/og/create-table.sql | 5 ++-
db/init/oracle/schema.sql | 5 ++-
db/init/pg/create-table.sql | 5 ++-
db/upgrade/2.6.1-upgrade-2.7.0-mysql.sql | 5 +++
db/upgrade/2.6.1-upgrade-2.7.0-og.sql | 8 +++-
db/upgrade/2.6.1-upgrade-2.7.0-oracle.sql | 7 +++-
db/upgrade/2.6.1-upgrade-2.7.0-pg.sql | 8 +++-
.../shenyu/admin/controller/AppAuthController.java | 7 +++-
.../apache/shenyu/admin/model/dto/AppAuthDTO.java | 31 ++++++++++++++-
.../shenyu/admin/model/dto/AuthApplyDTO.java | 33 +++++++++++++++-
.../shenyu/admin/model/dto/AuthPathWarpDTO.java | 4 +-
.../shenyu/admin/model/entity/AppAuthDO.java | 43 +++++++++++++++++++--
.../shenyu/admin/model/query/AppAuthQuery.java | 31 +++++++++++++--
.../apache/shenyu/admin/model/vo/AppAuthVO.java | 20 ++++++++++
.../admin/service/impl/AppAuthServiceImpl.java | 3 ++
.../shenyu/admin/transfer/AppAuthTransfer.java | 2 +
.../src/main/resources/mappers/app-auth-sqlmap.xml | 11 +++++-
.../src/main/resources/sql-script/h2/schema.sql | 4 +-
.../admin/controller/AppAuthControllerTest.java | 24 +++++++++++-
.../shenyu/admin/mapper/AppAuthMapperTest.java | 4 ++
.../org/apache/shenyu/common/dto/AppAuthData.java | 44 +++++++++++++++++++++-
23 files changed, 285 insertions(+), 27 deletions(-)
diff --git a/db/init/mysql/schema.sql b/db/init/mysql/schema.sql
index 4a96c40970..da43e0559c 100644
--- a/db/init/mysql/schema.sql
+++ b/db/init/mysql/schema.sql
@@ -2375,4 +2375,6 @@ ALTER TABLE `shenyu`.`selector` ADD COLUMN `namespace_id`
varchar(50) NULL COMME
ALTER TABLE `shenyu`.`rule` ADD COLUMN `namespace_id` varchar(50) NULL COMMENT
'namespaceId' AFTER `match_restful`;
-ALTER TABLE `shenyu`.`meta_data` ADD COLUMN `namespace_id` varchar(50) NULL
COMMENT 'namespaceId';
\ No newline at end of file
+ALTER TABLE `shenyu`.`meta_data` ADD COLUMN `namespace_id` varchar(50) NULL
COMMENT 'namespaceId';
+
+ALTER TABLE `shenyu`.`app_auth` ADD COLUMN `namespace_id` varchar(50) NULL
COMMENT 'namespaceId' AFTER `enabled`;
\ No newline at end of file
diff --git a/db/init/ob/schema.sql b/db/init/ob/schema.sql
index 4a96c40970..da43e0559c 100644
--- a/db/init/ob/schema.sql
+++ b/db/init/ob/schema.sql
@@ -2375,4 +2375,6 @@ ALTER TABLE `shenyu`.`selector` ADD COLUMN `namespace_id`
varchar(50) NULL COMME
ALTER TABLE `shenyu`.`rule` ADD COLUMN `namespace_id` varchar(50) NULL COMMENT
'namespaceId' AFTER `match_restful`;
-ALTER TABLE `shenyu`.`meta_data` ADD COLUMN `namespace_id` varchar(50) NULL
COMMENT 'namespaceId';
\ No newline at end of file
+ALTER TABLE `shenyu`.`meta_data` ADD COLUMN `namespace_id` varchar(50) NULL
COMMENT 'namespaceId';
+
+ALTER TABLE `shenyu`.`app_auth` ADD COLUMN `namespace_id` varchar(50) NULL
COMMENT 'namespaceId' AFTER `enabled`;
\ No newline at end of file
diff --git a/db/init/og/create-table.sql b/db/init/og/create-table.sql
index 398a487ca1..86099a8afa 100644
--- a/db/init/og/create-table.sql
+++ b/db/init/og/create-table.sql
@@ -2681,4 +2681,7 @@ ALTER TABLE "public"."rule" ADD COLUMN namespace_id
VARCHAR(50) NULL;
COMMENT ON COLUMN "public"."rule"."namespace_id" IS 'namespaceId';
ALTER TABLE "public"."meta_data" ADD COLUMN namespace_id VARCHAR(50) NULL;
-COMMENT ON COLUMN "public"."meta_data"."namespace_id" IS 'namespaceId';
\ No newline at end of file
+COMMENT ON COLUMN "public"."meta_data"."namespace_id" IS 'namespaceId';
+
+ALTER TABLE "public"."app_auth" ADD COLUMN namespace_id VARCHAR(50) NULL;
+COMMENT ON COLUMN "public"."app_auth"."namespace_id" IS 'namespaceId';
\ No newline at end of file
diff --git a/db/init/oracle/schema.sql b/db/init/oracle/schema.sql
index 27d708d87c..62c66c98dd 100644
--- a/db/init/oracle/schema.sql
+++ b/db/init/oracle/schema.sql
@@ -2866,4 +2866,7 @@ ALTER TABLE rule ADD namespace_id VARCHAR2(50) NULL;
COMMENT ON COLUMN rule.namespace_id IS 'namespaceId';
ALTER TABLE meta_data ADD namespace_id VARCHAR2(50) NULL;
-COMMENT ON COLUMN meta_data.namespace_id IS 'namespaceId';
\ No newline at end of file
+COMMENT ON COLUMN meta_data.namespace_id IS 'namespaceId';
+
+ALTER TABLE app_auth ADD namespace_id VARCHAR2(50) NULL;
+COMMENT ON COLUMN app_auth.namespace_id IS 'namespaceId';
\ No newline at end of file
diff --git a/db/init/pg/create-table.sql b/db/init/pg/create-table.sql
index bae10afbc3..f4a6d4a5b8 100644
--- a/db/init/pg/create-table.sql
+++ b/db/init/pg/create-table.sql
@@ -2798,4 +2798,7 @@ ALTER TABLE "public"."rule" ADD COLUMN namespace_id
VARCHAR(50) NULL;
COMMENT ON COLUMN "public"."rule"."namespace_id" IS 'namespaceId';
ALTER TABLE "public"."meta_data" ADD COLUMN namespace_id VARCHAR(50) NULL;
-COMMENT ON COLUMN "public"."meta_data"."namespace_id" IS 'namespaceId';
\ No newline at end of file
+COMMENT ON COLUMN "public"."meta_data"."namespace_id" IS 'namespaceId';
+
+ALTER TABLE "public"."app_auth" ADD COLUMN namespace_id VARCHAR(50) NULL;
+COMMENT ON COLUMN "public"."app_auth"."namespace_id" IS 'namespaceId';
\ No newline at end of file
diff --git a/db/upgrade/2.6.1-upgrade-2.7.0-mysql.sql
b/db/upgrade/2.6.1-upgrade-2.7.0-mysql.sql
index b83bd1cc78..d444a7e21d 100755
--- a/db/upgrade/2.6.1-upgrade-2.7.0-mysql.sql
+++ b/db/upgrade/2.6.1-upgrade-2.7.0-mysql.sql
@@ -189,3 +189,8 @@ UPDATE meta_data
SET namespace_id = '649330b6-c2d7-4edc-be8e-8a54df9eb385'
WHERE namespace_id IS NULL;
+ALTER TABLE `shenyu`.`app_auth` ADD COLUMN `namespace_id` varchar(50) NULL
COMMENT 'namespaceId' AFTER `enabled`;
+
+UPDATE app_auth
+SET namespace_id = '649330b6-c2d7-4edc-be8e-8a54df9eb385'
+WHERE namespace_id IS NULL;
\ No newline at end of file
diff --git a/db/upgrade/2.6.1-upgrade-2.7.0-og.sql
b/db/upgrade/2.6.1-upgrade-2.7.0-og.sql
index 1ae2f669e5..6231fa87bd 100644
--- a/db/upgrade/2.6.1-upgrade-2.7.0-og.sql
+++ b/db/upgrade/2.6.1-upgrade-2.7.0-og.sql
@@ -206,4 +206,10 @@ UPDATE "public"."rule" SET namespace_id =
'649330b6-c2d7-4edc-be8e-8a54df9eb385'
ALTER TABLE "public"."meta_data" ADD COLUMN namespace_id VARCHAR(50) NULL;
COMMENT ON COLUMN "public"."meta_data"."namespace_id" IS 'namespaceId';
-UPDATE "public"."meta_data" SET namespace_id =
'649330b6-c2d7-4edc-be8e-8a54df9eb385' WHERE namespace_id IS NULL;
\ No newline at end of file
+UPDATE "public"."meta_data" SET namespace_id =
'649330b6-c2d7-4edc-be8e-8a54df9eb385' WHERE namespace_id IS NULL;
+
+ALTER TABLE "public"."app_auth" ADD COLUMN namespace_id VARCHAR(50) NULL;
+COMMENT ON COLUMN "public"."app_auth"."namespace_id" IS 'namespaceId';
+
+UPDATE "public"."app_auth" SET namespace_id =
'649330b6-c2d7-4edc-be8e-8a54df9eb385' WHERE namespace_id IS NULL;
+
diff --git a/db/upgrade/2.6.1-upgrade-2.7.0-oracle.sql
b/db/upgrade/2.6.1-upgrade-2.7.0-oracle.sql
index b31e9c8147..6dd02b04a2 100755
--- a/db/upgrade/2.6.1-upgrade-2.7.0-oracle.sql
+++ b/db/upgrade/2.6.1-upgrade-2.7.0-oracle.sql
@@ -232,4 +232,9 @@ UPDATE rule SET namespace_id =
'649330b6-c2d7-4edc-be8e-8a54df9eb385' WHERE name
ALTER TABLE meta_data ADD namespace_id VARCHAR2(50) NULL;
COMMENT ON COLUMN meta_data.namespace_id IS 'namespaceId';
-UPDATE meta_data SET namespace_id = '649330b6-c2d7-4edc-be8e-8a54df9eb385'
WHERE namespace_id IS NULL;
\ No newline at end of file
+UPDATE meta_data SET namespace_id = '649330b6-c2d7-4edc-be8e-8a54df9eb385'
WHERE namespace_id IS NULL;
+
+ALTER TABLE app_auth ADD namespace_id VARCHAR2(50) NULL;
+COMMENT ON COLUMN app_auth.namespace_id IS 'namespaceId';
+
+UPDATE app_auth SET namespace_id = '649330b6-c2d7-4edc-be8e-8a54df9eb385'
WHERE namespace_id IS NULL;
diff --git a/db/upgrade/2.6.1-upgrade-2.7.0-pg.sql
b/db/upgrade/2.6.1-upgrade-2.7.0-pg.sql
index 55d068f2b5..581459bafb 100755
--- a/db/upgrade/2.6.1-upgrade-2.7.0-pg.sql
+++ b/db/upgrade/2.6.1-upgrade-2.7.0-pg.sql
@@ -207,4 +207,10 @@ UPDATE "public"."rule" SET namespace_id =
'649330b6-c2d7-4edc-be8e-8a54df9eb385'
ALTER TABLE "public"."meta_data" ADD COLUMN namespace_id VARCHAR(50) NULL;
COMMENT ON COLUMN "public"."meta_data"."namespace_id" IS 'namespaceId';
-UPDATE "public"."meta_data" SET namespace_id =
'649330b6-c2d7-4edc-be8e-8a54df9eb385' WHERE namespace_id IS NULL;
\ No newline at end of file
+UPDATE "public"."meta_data" SET namespace_id =
'649330b6-c2d7-4edc-be8e-8a54df9eb385' WHERE namespace_id IS NULL;
+
+ALTER TABLE "public"."app_auth" ADD COLUMN namespace_id VARCHAR(50) NULL;
+COMMENT ON COLUMN "public"."app_auth"."namespace_id" IS 'namespaceId';
+
+UPDATE "public"."app_auth" SET namespace_id =
'649330b6-c2d7-4edc-be8e-8a54df9eb385' WHERE namespace_id IS NULL;
+
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/AppAuthController.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/AppAuthController.java
index aa85bcff39..d96d6839c7 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/AppAuthController.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/AppAuthController.java
@@ -21,6 +21,7 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.shenyu.admin.aspect.annotation.RestApi;
import org.apache.shenyu.admin.mapper.AppAuthMapper;
import org.apache.shenyu.admin.mapper.AuthPathMapper;
+import org.apache.shenyu.admin.mapper.NamespaceMapper;
import org.apache.shenyu.admin.model.dto.AppAuthDTO;
import org.apache.shenyu.admin.model.dto.AuthApplyDTO;
import org.apache.shenyu.admin.model.dto.AuthPathWarpDTO;
@@ -96,17 +97,21 @@ public class AppAuthController implements
PagedController<AppAuthQuery, AppAuthV
* @param phone specific phone
* @param currentPage current page of list
* @param pageSize page size of query
+ * @param namespaceId namespaceId
* @return the shenyu result
*/
@GetMapping("/findPageByQuery")
@RequiresPermissions("system:authen:list")
public ShenyuAdminResult findPageByQuery(final String appKey, final String
phone,
@RequestParam @NotNull(message =
"currentPage not null") final Integer currentPage,
- @RequestParam @NotNull(message =
"pageSize not null") final Integer pageSize) {
+ @RequestParam @NotNull(message =
"pageSize not null") final Integer pageSize,
+ @Valid @Existed(message =
"namespaceId is not existed",
+ provider =
NamespaceMapper.class) final String namespaceId) {
AppAuthQuery query = new AppAuthQuery();
query.setPhone(phone);
query.setAppKey(appKey);
query.setPageParameter(new PageParameter(currentPage, pageSize));
+ query.setNamespaceId(namespaceId);
CommonPager<AppAuthVO> commonPager = appAuthService.listByPage(query);
return ShenyuAdminResult.success(ShenyuResultMessage.QUERY_SUCCESS,
commonPager);
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AppAuthDTO.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AppAuthDTO.java
index 0cfdecd2ea..662b8bf5f6 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AppAuthDTO.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AppAuthDTO.java
@@ -18,6 +18,7 @@
package org.apache.shenyu.admin.model.dto;
import org.apache.shenyu.admin.mapper.AppAuthMapper;
+import org.apache.shenyu.admin.mapper.NamespaceMapper;
import org.apache.shenyu.admin.validation.annotation.Existed;
import jakarta.validation.Valid;
@@ -75,6 +76,13 @@ public class AppAuthDTO implements Serializable {
@Valid
private List<AuthPathDTO> authPathList;
+
+ /**
+ * namespaceId.
+ */
+ @NotBlank
+ @Existed(message = "namespaceId is not existed", provider =
NamespaceMapper.class)
+ private String namespaceId;
/**
* Gets the value of id.
@@ -255,6 +263,24 @@ public class AppAuthDTO implements Serializable {
public void setAuthPathList(final List<AuthPathDTO> authPathList) {
this.authPathList = authPathList;
}
+
+ /**
+ * get namespaceId.
+ *
+ * @return namespaceId
+ */
+ public String getNamespaceId() {
+ return namespaceId;
+ }
+
+ /**
+ * set namespaceId.
+ *
+ * @param namespaceId namespaceId
+ */
+ public void setNamespaceId(final String namespaceId) {
+ this.namespaceId = namespaceId;
+ }
@Override
public boolean equals(final Object o) {
@@ -274,11 +300,12 @@ public class AppAuthDTO implements Serializable {
&& Objects.equals(open, that.open)
&& Objects.equals(enabled, that.enabled)
&& Objects.equals(authParamList, that.authParamList)
- && Objects.equals(authPathList, that.authPathList);
+ && Objects.equals(authPathList, that.authPathList)
+ && Objects.equals(namespaceId, that.namespaceId);
}
@Override
public int hashCode() {
- return Objects.hash(id, appKey, appSecret, userId, phone, extInfo,
open, enabled, authParamList, authPathList);
+ return Objects.hash(id, appKey, appSecret, userId, phone, extInfo,
open, enabled, authParamList, authPathList, namespaceId);
}
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthApplyDTO.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthApplyDTO.java
index 0d42edfa42..0c816273c7 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthApplyDTO.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthApplyDTO.java
@@ -19,6 +19,9 @@ package org.apache.shenyu.admin.model.dto;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
+import org.apache.shenyu.admin.mapper.NamespaceMapper;
+import org.apache.shenyu.admin.validation.annotation.Existed;
+
import java.io.Serializable;
import java.util.List;
import java.util.Objects;
@@ -49,6 +52,13 @@ public class AuthApplyDTO implements Serializable {
private List<String> pathList;
+ /**
+ * namespaceId.
+ */
+ @NotBlank
+ @Existed(message = "namespaceId is not existed", provider =
NamespaceMapper.class)
+ private String namespaceId;
+
/**
* Gets the value of appKey.
*
@@ -193,6 +203,24 @@ public class AuthApplyDTO implements Serializable {
this.pathList = pathList;
}
+ /**
+ * get namespaceId.
+ *
+ * @return namespaceId
+ */
+ public String getNamespaceId() {
+ return namespaceId;
+ }
+
+ /**
+ * set namespaceId.
+ *
+ * @param namespaceId namespaceId
+ */
+ public void setNamespaceId(final String namespaceId) {
+ this.namespaceId = namespaceId;
+ }
+
@Override
public boolean equals(final Object o) {
if (this == o) {
@@ -209,11 +237,12 @@ public class AuthApplyDTO implements Serializable {
&& Objects.equals(appParam, that.appParam)
&& Objects.equals(extInfo, that.extInfo)
&& Objects.equals(open, that.open)
- && Objects.equals(pathList, that.pathList);
+ && Objects.equals(pathList, that.pathList)
+ && Objects.equals(namespaceId, that.namespaceId);
}
@Override
public int hashCode() {
- return Objects.hash(appKey, userId, phone, appName, appParam, extInfo,
open, pathList);
+ return Objects.hash(appKey, userId, phone, appName, appParam, extInfo,
open, pathList, namespaceId);
}
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathWarpDTO.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathWarpDTO.java
index 60658e8e07..238b73dfe8 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathWarpDTO.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathWarpDTO.java
@@ -17,11 +17,11 @@
package org.apache.shenyu.admin.model.dto;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotEmpty;
import org.apache.shenyu.admin.mapper.AppAuthMapper;
import org.apache.shenyu.admin.validation.annotation.Existed;
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.List;
import java.util.Objects;
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AppAuthDO.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AppAuthDO.java
index 087757ddbb..4c050968a7 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AppAuthDO.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AppAuthDO.java
@@ -60,10 +60,12 @@ public final class AppAuthDO extends BaseDO {
private String extInfo;
+ private String namespaceId;
+
public AppAuthDO() {
}
- public AppAuthDO(final String appKey, final String appSecret, final
Boolean enabled, final Boolean open, final String userId, final String phone,
final String extInfo) {
+ public AppAuthDO(final String appKey, final String appSecret, final
Boolean enabled, final Boolean open, final String userId, final String phone,
final String extInfo, final String namespaceId) {
this.appKey = appKey;
this.appSecret = appSecret;
this.enabled = enabled;
@@ -71,6 +73,7 @@ public final class AppAuthDO extends BaseDO {
this.userId = userId;
this.phone = phone;
this.extInfo = extInfo;
+ this.namespaceId = namespaceId;
}
/**
@@ -199,6 +202,24 @@ public final class AppAuthDO extends BaseDO {
this.extInfo = extInfo;
}
+ /**
+ * get namespaceId.
+ *
+ * @return namespaceId
+ */
+ public String getNamespaceId() {
+ return namespaceId;
+ }
+
+ /**
+ * set namespaceId.
+ *
+ * @param namespaceId namespaceId
+ */
+ public void setNamespaceId(final String namespaceId) {
+ this.namespaceId = namespaceId;
+ }
+
/**
* Build AppAuthDO object with given AppAuthDTO object.
*
@@ -243,6 +264,7 @@ public final class AppAuthDO extends BaseDO {
.appSecret(SignUtils.generateKey())
.open(item.getOpen())
.enabled(true)
+ .namespaceId(item.getNamespaceId())
.dateCreated(currentTime)
.dateUpdated(currentTime)
.build();
@@ -276,12 +298,13 @@ public final class AppAuthDO extends BaseDO {
&& open.equals(appAuthDO.open)
&& userId.equals(appAuthDO.userId)
&& phone.equals(appAuthDO.phone)
- && extInfo.equals(appAuthDO.extInfo);
+ && extInfo.equals(appAuthDO.extInfo)
+ && namespaceId.equals(appAuthDO.namespaceId);
}
@Override
public int hashCode() {
- return Objects.hash(appKey, appSecret, enabled, open, userId, phone,
extInfo);
+ return Objects.hash(appKey, appSecret, enabled, open, userId, phone,
extInfo, namespaceId);
}
public static final class AppAuthDOBuilder {
@@ -302,6 +325,8 @@ public final class AppAuthDO extends BaseDO {
private String id;
+ private String namespaceId;
+
private Timestamp dateCreated;
private Timestamp dateUpdated;
@@ -397,6 +422,17 @@ public final class AppAuthDO extends BaseDO {
return this;
}
+ /**
+ * namespaceId.
+ *
+ * @param namespaceId namespaceId
+ * @return AppAuthDOBuilder
+ */
+ public AppAuthDOBuilder namespaceId(final String namespaceId) {
+ this.namespaceId = namespaceId;
+ return this;
+ }
+
/**
* dateCreated.
*
@@ -436,6 +472,7 @@ public final class AppAuthDO extends BaseDO {
appAuthDO.setId(id);
appAuthDO.setDateCreated(dateCreated);
appAuthDO.setDateUpdated(dateUpdated);
+ appAuthDO.setNamespaceId(namespaceId);
return appAuthDO;
}
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/query/AppAuthQuery.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/query/AppAuthQuery.java
index 6abbbb9692..0b69b23aa2 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/query/AppAuthQuery.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/query/AppAuthQuery.java
@@ -44,13 +44,19 @@ public class AppAuthQuery implements Serializable {
*/
private PageParameter pageParameter;
+ /**
+ * namespace id.
+ */
+ private String namespaceId;
+
public AppAuthQuery() {
}
- public AppAuthQuery(final String appKey, final String phone, final
PageParameter pageParameter) {
+ public AppAuthQuery(final String appKey, final String phone, final
PageParameter pageParameter, final String namespaceId) {
this.appKey = appKey;
this.phone = phone;
this.pageParameter = pageParameter;
+ this.namespaceId = namespaceId;
}
/**
@@ -107,6 +113,24 @@ public class AppAuthQuery implements Serializable {
this.pageParameter = pageParameter;
}
+ /**
+ * Gets the value of name.
+ *
+ * @return the value of name
+ */
+ public String getNamespaceId() {
+ return namespaceId;
+ }
+
+ /**
+ * Sets the namespaceId.
+ *
+ * @param namespaceId namespaceId
+ */
+ public void setNamespaceId(final String namespaceId) {
+ this.namespaceId = namespaceId;
+ }
+
@Override
public boolean equals(final Object o) {
if (this == o) {
@@ -116,11 +140,12 @@ public class AppAuthQuery implements Serializable {
return false;
}
AppAuthQuery that = (AppAuthQuery) o;
- return Objects.equals(appKey, that.appKey) && Objects.equals(phone,
that.phone) && Objects.equals(pageParameter, that.pageParameter);
+ return Objects.equals(appKey, that.appKey) && Objects.equals(phone,
that.phone) && Objects.equals(pageParameter, that.pageParameter)
+ && Objects.equals(namespaceId, that.namespaceId);
}
@Override
public int hashCode() {
- return Objects.hash(appKey, phone, pageParameter);
+ return Objects.hash(appKey, phone, pageParameter, namespaceId);
}
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/vo/AppAuthVO.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/vo/AppAuthVO.java
index ca34670e23..4aae4b0d81 100644
--- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/vo/AppAuthVO.java
+++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/vo/AppAuthVO.java
@@ -62,6 +62,8 @@ public class AppAuthVO implements Serializable {
private List<AuthPathVO> authPathList;
+ private String namespaceId;
+
/**
* updated time.
*/
@@ -274,6 +276,24 @@ public class AppAuthVO implements Serializable {
this.authPathList = authPathList;
}
+ /**
+ * get namespaceId.
+ *
+ * @return namespaceId
+ */
+ public String getNamespaceId() {
+ return namespaceId;
+ }
+
+ /**
+ * set namespaceId.
+ *
+ * @param namespaceId namespaceId
+ */
+ public void setNamespaceId(final String namespaceId) {
+ this.namespaceId = namespaceId;
+ }
+
/**
* Gets the value of dateUpdated.
*
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AppAuthServiceImpl.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AppAuthServiceImpl.java
index 36bc10cfb3..b1f780fe1c 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AppAuthServiceImpl.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AppAuthServiceImpl.java
@@ -117,6 +117,7 @@ public class AppAuthServiceImpl implements AppAuthService {
.appSecret(appAuthDO.getAppSecret())
.open(appAuthDO.getOpen())
.enabled(appAuthDO.getEnabled())
+ .namespaceId(appAuthDO.getNamespaceId())
.paramDataList(Lists.newArrayList(new
AuthParamData(authParamDO.getAppName(), authParamDO.getAppParam())))
.build();
@@ -546,6 +547,7 @@ public class AppAuthServiceImpl implements AppAuthService {
.appSecret(appAuthDO.getAppSecret())
.open(appAuthDO.getOpen())
.enabled(appAuthDO.getEnabled())
+ .namespaceId(appAuthDO.getNamespaceId())
.build();
List<AuthParamDO> authParamDOList =
authParamMapper.findByAuthId(appAuthDO.getId());
if (CollectionUtils.isNotEmpty(authParamDOList)) {
@@ -571,6 +573,7 @@ public class AppAuthServiceImpl implements AppAuthService {
.appSecret(appAuthDO.getAppSecret())
.open(appAuthDO.getOpen())
.enabled(appAuthDO.getEnabled())
+ .namespaceId(appAuthDO.getNamespaceId())
.build();
if (CollectionUtils.isNotEmpty(authParamDataList)) {
data.setParamDataList(authParamDataList);
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/transfer/AppAuthTransfer.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/transfer/AppAuthTransfer.java
index 915aab4921..f49c93b04a 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/transfer/AppAuthTransfer.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/transfer/AppAuthTransfer.java
@@ -56,6 +56,7 @@ public enum AppAuthTransfer {
appAuthDO.userId(v.getUserId());
appAuthDO.phone(v.getPhone());
appAuthDO.extInfo(v.getExtInfo());
+ appAuthDO.namespaceId(v.getNamespaceId());
return appAuthDO.build();
})
.orElse(null);
@@ -79,6 +80,7 @@ public enum AppAuthTransfer {
appAuthVO.setExtInfo(v.getExtInfo());
appAuthVO.setOpen(v.getOpen());
appAuthVO.setEnabled(appAuthDO.getEnabled());
+ appAuthVO.setNamespaceId(appAuthDO.getNamespaceId());
appAuthVO.setDateUpdated(Optional.ofNullable(appAuthDO.getDateUpdated())
.map(u ->
DateUtils.localDateTimeToString(u.toLocalDateTime()))
.orElse(null));
diff --git a/shenyu-admin/src/main/resources/mappers/app-auth-sqlmap.xml
b/shenyu-admin/src/main/resources/mappers/app-auth-sqlmap.xml
index 32d08a8b2d..6c8e17d79b 100644
--- a/shenyu-admin/src/main/resources/mappers/app-auth-sqlmap.xml
+++ b/shenyu-admin/src/main/resources/mappers/app-auth-sqlmap.xml
@@ -37,7 +37,9 @@
app_secret,user_id,
phone,
ext_info,
- open,enabled,
+ open,
+ enabled,
+ namespace_id,
date_created,
date_updated
</sql>
@@ -85,6 +87,9 @@
<include refid="Base_Column_List"/>
FROM app_auth
<where>
+ <if test="namespaceId != null and namespaceId != ''">
+ AND namespace_id = #{namespaceId, jdbcType=VARCHAR}
+ </if>
<if test="appKey != null and appKey != ''">
AND app_key = #{appKey, jdbcType=VARCHAR}
</if>
@@ -98,6 +103,7 @@
SELECT count(1)
FROM app_auth
<where>
+ namespace_id = #{namespaceId, jdbcType=VARCHAR}
<if test="appKey != null and appKey != ''">
AND app_key = #{appKey, jdbcType=VARCHAR}
</if>
@@ -137,6 +143,7 @@
ext_info,
open,
enabled,
+ namespace_id,
date_created,
date_updated)
VALUES
@@ -148,6 +155,7 @@
#{extInfo, jdbcType=VARCHAR},
#{open, jdbcType=TINYINT},
#{enabled, jdbcType=TINYINT},
+ #{namespaceId, jdbcType=VARCHAR},
#{dateCreated, jdbcType=TIMESTAMP},
#{dateUpdated, jdbcType=TIMESTAMP})
</insert>
@@ -227,6 +235,7 @@
open = #{open, jdbcType=TINYINT},
enabled = #{enabled, jdbcType=TINYINT}
WHERE id = #{id, jdbcType=VARCHAR}
+ AND namespace_id = #{namespaceId, jdbcType=VARCHAR}
</update>
<update id="updateSelective"
parameterType="org.apache.shenyu.admin.model.entity.AppAuthDO">
diff --git a/shenyu-admin/src/main/resources/sql-script/h2/schema.sql
b/shenyu-admin/src/main/resources/sql-script/h2/schema.sql
index 0803c80123..3c8a0da2c7 100755
--- a/shenyu-admin/src/main/resources/sql-script/h2/schema.sql
+++ b/shenyu-admin/src/main/resources/sql-script/h2/schema.sql
@@ -1346,4 +1346,6 @@ ALTER TABLE `selector` ADD COLUMN `namespace_id`
varchar(50) NULL COMMENT 'names
ALTER TABLE `rule` ADD COLUMN `namespace_id` varchar(50) NULL COMMENT
'namespaceId' AFTER `match_restful`;
-ALTER TABLE `meta_data` ADD COLUMN `namespace_id` varchar(50) NULL COMMENT
'namespaceId' ;
\ No newline at end of file
+ALTER TABLE `meta_data` ADD COLUMN `namespace_id` varchar(50) NULL COMMENT
'namespaceId' ;
+
+ALTER TABLE `app_auth` ADD COLUMN `namespace_id` varchar(50) NULL COMMENT
'namespaceId' ;
\ No newline at end of file
diff --git
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/AppAuthControllerTest.java
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/AppAuthControllerTest.java
index 039441e76d..14244f643b 100644
---
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/AppAuthControllerTest.java
+++
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/AppAuthControllerTest.java
@@ -21,6 +21,7 @@ import java.util.Date;
import org.apache.commons.lang3.StringUtils;
import org.apache.shenyu.admin.mapper.AppAuthMapper;
import org.apache.shenyu.admin.mapper.AuthPathMapper;
+import org.apache.shenyu.admin.mapper.NamespaceMapper;
import org.apache.shenyu.admin.model.dto.AppAuthDTO;
import org.apache.shenyu.admin.model.dto.AuthApplyDTO;
import org.apache.shenyu.admin.model.dto.AuthPathDTO;
@@ -61,6 +62,7 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import static
org.apache.shenyu.common.constant.Constants.SYS_DEFAULT_NAMESPACE_ID;
import static org.hamcrest.core.Is.is;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock;
@@ -89,6 +91,9 @@ public final class AppAuthControllerTest {
@Mock
private AppAuthMapper appAuthMapper;
+ @Mock
+ private NamespaceMapper namespaceMapper;
+
private final AppAuthVO appAuthVO = new AppAuthVO("0001", "testAppKey",
"testAppSecret",
"testUser", "18600000000", "{\"extInfo\": \"test\"}",
true, true, null, null,
@@ -138,8 +143,12 @@ public final class AppAuthControllerTest {
authApplyDTO.setExtInfo("{\"extInfo\": \"test\"}");
authApplyDTO.setOpen(true);
authApplyDTO.setPathList(pathList);
+ authApplyDTO.setNamespaceId(SYS_DEFAULT_NAMESPACE_ID);
given(this.appAuthService.applyCreate(authApplyDTO)).willReturn(
ShenyuAdminResult.success(ShenyuResultMessage.CREATE_SUCCESS));
+
SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class));
+
when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper);
+
when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true);
this.mockMvc.perform(MockMvcRequestBuilders.post("/appAuth/apply")
.contentType(MediaType.APPLICATION_JSON)
.content(GsonUtils.getInstance().toJson(authApplyDTO)))
@@ -161,6 +170,10 @@ public final class AppAuthControllerTest {
authApplyDTO.setExtInfo("{\"extInfo\": \"test\"}");
authApplyDTO.setOpen(true);
authApplyDTO.setPathList(pathList);
+ authApplyDTO.setNamespaceId(SYS_DEFAULT_NAMESPACE_ID);
+
SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class));
+
when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper);
+
when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true);
given(this.appAuthService.applyUpdate(authApplyDTO)).willReturn(
ShenyuAdminResult.success(ShenyuResultMessage.CREATE_SUCCESS));
this.mockMvc.perform(MockMvcRequestBuilders.post("/appAuth/apply")
@@ -183,14 +196,18 @@ public final class AppAuthControllerTest {
@Test
public void testFindPageByQuery() throws Exception {
final PageParameter pageParameter = new PageParameter();
- final AppAuthQuery appAuthQuery = new AppAuthQuery("testAppKey",
"18600000000", pageParameter);
+ final AppAuthQuery appAuthQuery = new AppAuthQuery("testAppKey",
"18600000000", pageParameter, SYS_DEFAULT_NAMESPACE_ID);
final CommonPager<AppAuthVO> commonPager = new
CommonPager<>(pageParameter, Collections.singletonList(appAuthVO));
given(this.appAuthService.listByPage(appAuthQuery)).willReturn(commonPager);
+
SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class));
+
when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper);
+
when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true);
this.mockMvc.perform(MockMvcRequestBuilders.get("/appAuth/findPageByQuery")
.param("appKey", "testAppKey")
.param("phone", "18600000000")
.param("currentPage",
String.valueOf(pageParameter.getCurrentPage()))
- .param("pageSize",
String.valueOf(pageParameter.getPageSize())))
+ .param("pageSize", String.valueOf(pageParameter.getPageSize()))
+ .param("namespaceId", SYS_DEFAULT_NAMESPACE_ID))
.andExpect(status().isOk())
.andExpect(jsonPath("$.message",
is(ShenyuResultMessage.QUERY_SUCCESS)))
.andExpect(jsonPath("$.data.dataList[0].appKey",
is(appAuthVO.getAppKey())))
@@ -215,12 +232,15 @@ public final class AppAuthControllerTest {
appAuthDTO.setAppKey("app key");
appAuthDTO.setAppSecret("app secret");
appAuthDTO.setPhone("1234567");
+ appAuthDTO.setNamespaceId(SYS_DEFAULT_NAMESPACE_ID);
given(this.appAuthService.updateDetail(appAuthDTO)).willReturn(
ShenyuAdminResult.success(ShenyuResultMessage.UPDATE_SUCCESS));
ConfigurableApplicationContext context =
mock(ConfigurableApplicationContext.class);
SpringBeanUtils.getInstance().setApplicationContext(context);
when(SpringBeanUtils.getInstance().getBean(AppAuthMapper.class)).thenReturn(appAuthMapper);
when(appAuthMapper.existed(appAuthDTO.getId())).thenReturn(true);
+
when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper);
+
when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true);
this.mockMvc.perform(MockMvcRequestBuilders.post("/appAuth/updateDetail")
.contentType(MediaType.APPLICATION_JSON)
.content(GsonUtils.getInstance().toJson(appAuthDTO)))
diff --git
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/mapper/AppAuthMapperTest.java
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/mapper/AppAuthMapperTest.java
index f1c68ff7d4..c288e0b820 100644
---
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/mapper/AppAuthMapperTest.java
+++
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/mapper/AppAuthMapperTest.java
@@ -29,6 +29,7 @@ import jakarta.annotation.Resource;
import java.sql.Timestamp;
import java.util.List;
+import static
org.apache.shenyu.common.constant.Constants.SYS_DEFAULT_NAMESPACE_ID;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.greaterThan;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -66,6 +67,7 @@ public final class AppAuthMapperTest extends
AbstractSpringIntegrationTest {
@Test
public void testByQuery() {
AppAuthQuery appAuthQuery = new AppAuthQuery();
+ appAuthQuery.setNamespaceId(SYS_DEFAULT_NAMESPACE_ID);
List<AppAuthDO> appAuthDOsWithQuery =
appAuthMapper.selectByQuery(appAuthQuery);
assertThat(appAuthDOsWithQuery.size(), greaterThan(0));
@@ -90,6 +92,7 @@ public final class AppAuthMapperTest extends
AbstractSpringIntegrationTest {
AppAuthQuery appAuthQuery = new AppAuthQuery();
appAuthQuery.setPhone(appAuthDO.getPhone());
appAuthQuery.setAppKey(appAuthDO.getAppKey());
+ appAuthQuery.setNamespaceId(SYS_DEFAULT_NAMESPACE_ID);
int count = appAuthMapper.countByQuery(appAuthQuery);
assertEquals(1, count);
}
@@ -145,6 +148,7 @@ public final class AppAuthMapperTest extends
AbstractSpringIntegrationTest {
.enabled(false)
.phone("18800000000")
.userId(UUIDUtils.getInstance().generateShortUuid())
+ .namespaceId(SYS_DEFAULT_NAMESPACE_ID)
.dateCreated(now)
.dateUpdated(now)
.build();
diff --git
a/shenyu-common/src/main/java/org/apache/shenyu/common/dto/AppAuthData.java
b/shenyu-common/src/main/java/org/apache/shenyu/common/dto/AppAuthData.java
index e3ab6b3213..6b753d3435 100644
--- a/shenyu-common/src/main/java/org/apache/shenyu/common/dto/AppAuthData.java
+++ b/shenyu-common/src/main/java/org/apache/shenyu/common/dto/AppAuthData.java
@@ -39,6 +39,8 @@ public class AppAuthData {
private List<AuthPathData> pathDataList;
+ private String namespaceId;
+
/**
* no args constructor.
*/
@@ -57,6 +59,7 @@ public class AppAuthData {
this.open = builder.open;
this.paramDataList = builder.paramDataList;
this.pathDataList = builder.pathDataList;
+ this.namespaceId = builder.namespaceId;
}
/**
@@ -176,6 +179,24 @@ public class AppAuthData {
this.pathDataList = pathDataList;
}
+ /**
+ * get namespaceId.
+ *
+ * @return namespaceId
+ */
+ public String getNamespaceId() {
+ return namespaceId;
+ }
+
+ /**
+ * set namespaceId.
+ *
+ * @param namespaceId namespaceId
+ */
+ public void setNamespaceId(final String namespaceId) {
+ this.namespaceId = namespaceId;
+ }
+
@Override
public boolean equals(final Object o) {
if (this == o) {
@@ -186,12 +207,13 @@ public class AppAuthData {
}
AppAuthData that = (AppAuthData) o;
return Objects.equals(appKey, that.appKey) &&
Objects.equals(appSecret, that.appSecret) && Objects.equals(enabled,
that.enabled)
- && Objects.equals(open, that.open) &&
Objects.equals(paramDataList, that.paramDataList) &&
Objects.equals(pathDataList, that.pathDataList);
+ && Objects.equals(open, that.open) &&
Objects.equals(paramDataList, that.paramDataList) &&
Objects.equals(pathDataList, that.pathDataList)
+ && Objects.equals(namespaceId, that.namespaceId);
}
@Override
public int hashCode() {
- return Objects.hash(appKey, appSecret, enabled, open, paramDataList,
pathDataList);
+ return Objects.hash(appKey, appSecret, enabled, open, paramDataList,
pathDataList, namespaceId);
}
@Override
@@ -211,6 +233,8 @@ public class AppAuthData {
+ paramDataList
+ ", pathDataList="
+ pathDataList
+ + ", namespaceId="
+ + namespaceId
+ '}';
}
@@ -249,6 +273,11 @@ public class AppAuthData {
*/
private List<AuthPathData> pathDataList;
+ /**
+ * namespaceId.
+ */
+ private String namespaceId;
+
/**
* no args constructor.
*/
@@ -329,5 +358,16 @@ public class AppAuthData {
this.pathDataList = pathDataList;
return this;
}
+
+ /**
+ * namespaceId.
+ *
+ * @param namespaceId namespaceId
+ * @return this
+ */
+ public Builder namespaceId(final String namespaceId) {
+ this.namespaceId = namespaceId;
+ return this;
+ }
}
}