From 7936759ecb1805c15cbb242d11c1f006cdda57ef Mon Sep 17 00:00:00 2001 From: Sattvik Chakravarthy Date: Thu, 19 Oct 2023 13:28:45 +0530 Subject: [PATCH 1/4] fix: tenant config clone (#124) --- CHANGELOG.md | 4 ++ build.gradle | 2 +- .../multitenancy/TenantConfig.java | 2 +- .../multitenancy/ThirdPartyConfig.java | 49 ++++++++++++++++--- 4 files changed, 48 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb2378be..a4014772 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +## [4.0.1] - 2023-10-19 + +- Fixes cloning of `TenantConfig` object to include `null` values + ## [4.0.0] - 2023-09-19 - Adds support for account linking diff --git a/build.gradle b/build.gradle index 62e73f81..0602b3b4 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ plugins { id 'java-library' } -version = "4.0.0" +version = "4.0.1" repositories { mavenCentral() diff --git a/src/main/java/io/supertokens/pluginInterface/multitenancy/TenantConfig.java b/src/main/java/io/supertokens/pluginInterface/multitenancy/TenantConfig.java index db90e86a..15b2c109 100644 --- a/src/main/java/io/supertokens/pluginInterface/multitenancy/TenantConfig.java +++ b/src/main/java/io/supertokens/pluginInterface/multitenancy/TenantConfig.java @@ -61,7 +61,7 @@ public TenantConfig(TenantConfig other) { this.coreConfig = gson.fromJson(other.coreConfig.toString(), JsonObject.class); this.emailPasswordConfig = new EmailPasswordConfig(other.emailPasswordConfig.enabled); this.passwordlessConfig = new PasswordlessConfig(other.passwordlessConfig.enabled); - this.thirdPartyConfig = gson.fromJson(gson.toJsonTree(other.thirdPartyConfig).getAsJsonObject(), ThirdPartyConfig.class); + this.thirdPartyConfig = new ThirdPartyConfig(other.thirdPartyConfig.enabled, other.thirdPartyConfig.providers.clone()); } public boolean deepEquals(TenantConfig other) { diff --git a/src/main/java/io/supertokens/pluginInterface/multitenancy/ThirdPartyConfig.java b/src/main/java/io/supertokens/pluginInterface/multitenancy/ThirdPartyConfig.java index 456dc464..8e13d1d1 100644 --- a/src/main/java/io/supertokens/pluginInterface/multitenancy/ThirdPartyConfig.java +++ b/src/main/java/io/supertokens/pluginInterface/multitenancy/ThirdPartyConfig.java @@ -21,8 +21,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.util.Arrays; -import java.util.Objects; +import java.util.*; public class ThirdPartyConfig { public final boolean enabled; @@ -35,6 +34,38 @@ public ThirdPartyConfig(boolean enabled, @Nullable Provider[] providers) { this.providers = providers == null ? new Provider[0] : providers; } + public static boolean unorderedArrayEquals(Object[] array1, Object[] array2) { + if (array1 == null && array2 == null) { + return true; + } else if (array1 == null || array2 == null) { + return false; + } + + List items1 = List.of(array1); + List items2 = new ArrayList<>(); + items2.addAll(Arrays.asList(array2)); + + if (items1.size() != items2.size()) return false; + + for (Object p1 : items1) { + boolean found = false; + for (Object p2 : items2) { + if (p1.equals(p2)) { + found = true; + break; + } + } + + if (!found) { + return false; + } else { + items2.remove(p1); + } + } + + return true; + } + public static class Provider { @Nonnull @@ -105,11 +136,15 @@ public Provider(@Nonnull String thirdPartyId, @Nonnull String name, @Nullable Pr @Override public boolean equals(Object other) { + if (other == null) { + return false; + } + if (other instanceof Provider) { Provider otherProvider = (Provider) other; - return otherProvider.thirdPartyId.equals(this.thirdPartyId) && - otherProvider.name.equals(this.name) && - Arrays.equals(otherProvider.clients, this.clients) && + return Objects.equals(otherProvider.thirdPartyId, this.thirdPartyId) && + Objects.equals(otherProvider.name, this.name) && + unorderedArrayEquals(otherProvider.clients, this.clients) && Objects.equals(otherProvider.authorizationEndpoint, this.authorizationEndpoint) && Objects.equals(otherProvider.authorizationEndpointQueryParams, this.authorizationEndpointQueryParams) && @@ -165,7 +200,7 @@ public boolean equals(Object other) { return Objects.equals(otherProviderClient.clientType, this.clientType) && otherProviderClient.clientId.equals(this.clientId) && Objects.equals(otherProviderClient.clientSecret, this.clientSecret) && - Arrays.equals(otherProviderClient.scope, this.scope) && + unorderedArrayEquals(otherProviderClient.scope, this.scope) && otherProviderClient.forcePKCE == this.forcePKCE && Objects.equals(otherProviderClient.additionalConfig, this.additionalConfig); } @@ -230,7 +265,7 @@ public boolean equals(Object other) { if (other instanceof ThirdPartyConfig) { ThirdPartyConfig otherThirdPartyConfig = (ThirdPartyConfig) other; return otherThirdPartyConfig.enabled == this.enabled && - Arrays.equals(otherThirdPartyConfig.providers, this.providers); + unorderedArrayEquals(otherThirdPartyConfig.providers, this.providers); } return false; } From 2341d4fce185f7724839499353431c7426fdfb2b Mon Sep 17 00:00:00 2001 From: rishabhpoddar Date: Thu, 19 Oct 2023 13:29:42 +0530 Subject: [PATCH 2/4] adding dev-v4.0.1 tag to this commit to ensure building --- ...e-4.0.0.jar => plugin-interface-4.0.1.jar} | Bin 95242 -> 95918 bytes 1 file changed, 0 insertions(+), 0 deletions(-) rename jar/{plugin-interface-4.0.0.jar => plugin-interface-4.0.1.jar} (71%) diff --git a/jar/plugin-interface-4.0.0.jar b/jar/plugin-interface-4.0.1.jar similarity index 71% rename from jar/plugin-interface-4.0.0.jar rename to jar/plugin-interface-4.0.1.jar index 1eedae21d0b11d2422d8b447bebcf9a47bda34e7..0155ae29a54f9761a5fa334d003a418debb71b9e 100644 GIT binary patch delta 13005 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 UJ1+#B0yl#I3Ib7aXh`7vABzA|z5oCK delta 12242 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 T{*my5cY^`)Q%S;56s-RPAH(@A From 872f4621b98df58c7a37243017c5a6172bbd8b8e Mon Sep 17 00:00:00 2001 From: Sattvik Chakravarthy Date: Thu, 19 Oct 2023 17:36:34 +0530 Subject: [PATCH 3/4] fix: thirdparty json (#125) * fix: thirdparty json * fix: version update --- CHANGELOG.md | 4 ++ build.gradle | 2 +- .../multitenancy/TenantConfig.java | 3 ++ .../multitenancy/ThirdPartyConfig.java | 47 ++++++++++++++++++- 4 files changed, 54 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4014772..d59ee173 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +## [4.0.2] - 2023-10-19 + +- Fixes serialization of thirdParty config + ## [4.0.1] - 2023-10-19 - Fixes cloning of `TenantConfig` object to include `null` values diff --git a/build.gradle b/build.gradle index 0602b3b4..1d323424 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ plugins { id 'java-library' } -version = "4.0.1" +version = "4.0.2" repositories { mavenCentral() diff --git a/src/main/java/io/supertokens/pluginInterface/multitenancy/TenantConfig.java b/src/main/java/io/supertokens/pluginInterface/multitenancy/TenantConfig.java index 15b2c109..f68ee35d 100644 --- a/src/main/java/io/supertokens/pluginInterface/multitenancy/TenantConfig.java +++ b/src/main/java/io/supertokens/pluginInterface/multitenancy/TenantConfig.java @@ -92,6 +92,9 @@ public int hashCode() { public JsonObject toJson(boolean shouldProtectDbConfig, Storage storage, String[] protectedCoreConfigs) { Gson gson = new Gson(); JsonObject tenantConfigObject = gson.toJsonTree(this).getAsJsonObject(); + + tenantConfigObject.add("thirdParty", this.thirdPartyConfig.toJson()); + tenantConfigObject.addProperty("tenantId", this.tenantIdentifier.getTenantId()); if (shouldProtectDbConfig) { diff --git a/src/main/java/io/supertokens/pluginInterface/multitenancy/ThirdPartyConfig.java b/src/main/java/io/supertokens/pluginInterface/multitenancy/ThirdPartyConfig.java index 8e13d1d1..a100096f 100644 --- a/src/main/java/io/supertokens/pluginInterface/multitenancy/ThirdPartyConfig.java +++ b/src/main/java/io/supertokens/pluginInterface/multitenancy/ThirdPartyConfig.java @@ -16,8 +16,10 @@ package io.supertokens.pluginInterface.multitenancy; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; import com.google.gson.JsonObject; -import io.supertokens.pluginInterface.exceptions.InvalidConfigException; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -34,6 +36,18 @@ public ThirdPartyConfig(boolean enabled, @Nullable Provider[] providers) { this.providers = providers == null ? new Provider[0] : providers; } + public JsonObject toJson() { + JsonObject result = new JsonObject(); + result.addProperty("enabled", this.enabled); + result.add("providers", new JsonArray()); + + for (Provider provider : this.providers) { + result.getAsJsonArray("providers").add(provider.toJson()); + } + + return result; + } + public static boolean unorderedArrayEquals(Object[] array1, Object[] array2) { if (array1 == null && array2 == null) { return true; @@ -134,6 +148,37 @@ public Provider(@Nonnull String thirdPartyId, @Nonnull String name, @Nullable Pr this.userInfoMap = userInfoMap == null ? new UserInfoMap(null, null) : userInfoMap; } + public JsonObject toJson() { + JsonObject result = new Gson().toJsonTree(this).getAsJsonObject(); + + // These properties need to retain null values when serialized + if (this.authorizationEndpoint != null) { + result.add("authorizationEndpointQueryParams", + new GsonBuilder().serializeNulls().create().toJsonTree(this.authorizationEndpointQueryParams)); + } else { + result.remove("authorizationEndpointQueryParams"); + } + + if (this.tokenEndpointBodyParams != null) { + result.add("tokenEndpointBodyParams", new GsonBuilder().serializeNulls().create().toJsonTree(this.tokenEndpointBodyParams)); + } else { + result.remove("tokenEndpointBodyParams"); + } + + if (this.userInfoEndpointQueryParams != null) { + result.add("userInfoEndpointQueryParams", new GsonBuilder().serializeNulls().create().toJsonTree(this.userInfoEndpointQueryParams)); + } else { + result.remove("userInfoEndpointQueryParams"); + } + + if (this.userInfoEndpointHeaders != null) { + result.add("userInfoEndpointHeaders", new GsonBuilder().serializeNulls().create().toJsonTree(this.userInfoEndpointHeaders)); + } else { + result.remove("userInfoEndpointHeaders"); + } + return result; + } + @Override public boolean equals(Object other) { if (other == null) { From eb9a171ba6bdd1c371eaaacad60c6bdd368bf668 Mon Sep 17 00:00:00 2001 From: rishabhpoddar Date: Thu, 19 Oct 2023 17:37:00 +0530 Subject: [PATCH 4/4] adding dev-v4.0.2 tag to this commit to ensure building --- ...e-4.0.1.jar => plugin-interface-4.0.2.jar} | Bin 95918 -> 96710 bytes 1 file changed, 0 insertions(+), 0 deletions(-) rename jar/{plugin-interface-4.0.1.jar => plugin-interface-4.0.2.jar} (70%) diff --git a/jar/plugin-interface-4.0.1.jar b/jar/plugin-interface-4.0.2.jar similarity index 70% rename from jar/plugin-interface-4.0.1.jar rename to jar/plugin-interface-4.0.2.jar index 0155ae29a54f9761a5fa334d003a418debb71b9e..0d4123e82cc4538f8c9730a500706d9807e95819 100644 GIT binary patch delta 13109 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

nn8Z(Q*8WkJvf+W!M@9v7Pc delta 12374 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 Z;U9fCgXe$sdBK`6fQDEC4V4k^{{Yt%bf^FT