From 7bed2ce4f3ff4ee400eef675dda9f5e1f045ece9 Mon Sep 17 00:00:00 2001 From: Gaurav Goel Date: Thu, 8 May 2025 09:00:02 +0530 Subject: [PATCH 1/6] update sdk to support unreal engine 5.4.4 --- .../Source/Web3AuthSDK/Private/Web3Auth.cpp | 21 +++++++++++++------ Web3AuthUnrealSDK.uproject | 2 +- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Private/Web3Auth.cpp b/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Private/Web3Auth.cpp index d92c190..61fd8d5 100644 --- a/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Private/Web3Auth.cpp +++ b/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Private/Web3Auth.cpp @@ -707,12 +707,21 @@ FString UWeb3Auth::startLocalWebServer() { if (httpRouter.IsValid()) { - auto x = httpRouter->BindRoute(FHttpPath(TEXT("/auth")), EHttpServerRequestVerbs::VERB_GET, - [this](const FHttpServerRequest& Request, const FHttpResultCallback& OnComplete) { return requestAuthCallback(Request, OnComplete); }); - - - auto y = httpRouter->BindRoute(FHttpPath(TEXT("/complete")), EHttpServerRequestVerbs::VERB_GET, - [this](const FHttpServerRequest& Request, const FHttpResultCallback& OnComplete) { return requestCompleteCallback(Request, OnComplete); }); + auto x = httpRouter->BindRoute( + FHttpPath(TEXT("/auth")), + EHttpServerRequestVerbs::VERB_GET, + FHttpRequestHandler::CreateLambda( + [this](const FHttpServerRequest& Request, const FHttpResultCallback& OnComplete) { + return requestAuthCallback(Request, OnComplete); + })); + + auto y = httpRouter->BindRoute( + FHttpPath(TEXT("/complete")), + EHttpServerRequestVerbs::VERB_GET, + FHttpRequestHandler::CreateLambda( + [this](const FHttpServerRequest& Request, const FHttpResultCallback& OnComplete) { + return requestCompleteCallback(Request, OnComplete); + })); httpRoutes.Add(TPairInitializer, FHttpRouteHandle>(httpRouter, x)); httpRoutes.Add(TPairInitializer, FHttpRouteHandle>(httpRouter, y)); diff --git a/Web3AuthUnrealSDK.uproject b/Web3AuthUnrealSDK.uproject index 4ad5dbc..2ee4ee4 100644 --- a/Web3AuthUnrealSDK.uproject +++ b/Web3AuthUnrealSDK.uproject @@ -1,6 +1,6 @@ { "FileVersion": 3, - "EngineAssociation": "5.3", + "EngineAssociation": "5.4", "Category": "", "Description": "", "Modules": [ From 18329caaaa664fb50d678a8de04ee1d5fa181f61 Mon Sep 17 00:00:00 2001 From: Gaurav Goel Date: Thu, 8 May 2025 14:03:20 +0530 Subject: [PATCH 2/6] feat: v10 changes initial commit Signed-off-by: Gaurav Goel --- Content/Example.umap | Bin 9995 -> 10281 bytes .../Web3AuthSDK/Content/AuthInterface.uasset | Bin 358778 -> 376489 bytes .../Source/Web3AuthSDK/Private/Web3Auth.cpp | 181 ++++++++++-------- .../Source/Web3AuthSDK/Public/Web3Auth.h | 81 +++----- 4 files changed, 135 insertions(+), 127 deletions(-) diff --git a/Content/Example.umap b/Content/Example.umap index b4c64cee28570d1b34001a0ff4e77caa50cad5fb..5a2e5492de3d1943d4f83f23ef336f36e9b2dc74 100644 GIT binary patch literal 10281 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 diff --git a/Plugins/Web3AuthSDK/Content/AuthInterface.uasset b/Plugins/Web3AuthSDK/Content/AuthInterface.uasset index 81af8560c73187b4ac79281f175c71af2d5531dc..2dc944685b7485319c76c79bca654c890eb9ad76 100644 GIT binary patch literal 376489 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

>BU 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 I+Kv$Zf6zRnCIA2c diff --git a/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Private/Web3Auth.cpp b/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Private/Web3Auth.cpp index 61fd8d5..9a4046a 100644 --- a/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Private/Web3Auth.cpp +++ b/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Private/Web3Auth.cpp @@ -11,13 +11,13 @@ // Need to keep a pointer to self later. // How this works is: // Android: -// 1) Just before opening BrowserView, assign thiz to the current instance. Code then moves from C++ to Java. +// 1) Just before opening BrowserView, assign this to the current instance. Code then moves from C++ to Java. // 2) When returning from BrowserView, onDeepLink is called. Code returns to C++ from Java -// 3) In the implementation of onDeepLink, thiz is used to call the c++ method (setResultUrl) on this instance. +// 3) In the implementation of onDeepLink, this is used to call the c++ method (setResultUrl) on this instance. // IOS: -// 1) Just before opening WebAuthenticate, assign thiz to the current instance. Code then moves from C++ to ObjC. +// 1) Just before opening WebAuthenticate, assign this to the current instance. Code then moves from C++ to ObjC. // 2) When returning from WebAuthenticate, callBackFromWebAuthenticateIOS is called. Code returns to C++ from ObjC. -// 3) In the implementation of callBackFromWebAuthenticateIOS, thiz is used to call the c++ method (setResultUrl) on this instance. +// 3) In the implementation of callBackFromWebAuthenticateIOS, this is used to call the c++ method (setResultUrl) on this instance. UWeb3Auth* thiz_instance = nullptr; @@ -75,9 +75,10 @@ void UWeb3Auth::processRequest(FString path, FLoginParams* loginParams = nullptr TSharedPtr initParams = MakeShareable(new FJsonObject); + UE_LOG(LogTemp, Warning, TEXT("clientId: %s"), *web3AuthOptions.clientId); initParams->SetStringField("clientId", web3AuthOptions.clientId); - switch (web3AuthOptions.network) { + switch (web3AuthOptions.web3AuthNetwork) { case FNetwork::MAINNET: initParams->SetStringField("network", "mainnet"); break; @@ -124,7 +125,7 @@ void UWeb3Auth::processRequest(FString path, FLoginParams* loginParams = nullptr } #endif - switch (web3AuthOptions.buildEnv) { + switch (web3AuthOptions.authBuildEnv) { case FBuildEnv::PRODUCTION: initParams->SetStringField("buildEnv", "production"); break; @@ -164,22 +165,29 @@ void UWeb3Auth::processRequest(FString path, FLoginParams* loginParams = nullptr FJsonObjectConverter::UStructToJsonObjectString(FChainConfig::StaticStruct(), &web3AuthOptions.chainConfig, chainConfigOutput); initParams->SetStringField("chainConfig", chainConfigOutput); - if (!web3AuthOptions.loginConfig.IsEmpty()) { - FString output; - - TSharedPtr loginConfigMap = MakeShareable(new FJsonObject); - - for (auto item : web3AuthOptions.loginConfig) { - TSharedPtr loginConfigObject = MakeShareable(new FJsonObject); - FJsonObjectConverter::UStructToJsonObject(FLoginConfigItem::StaticStruct(), &item.Value, loginConfigObject.ToSharedRef(), 0, 0); + if (!web3AuthOptions.authConnectionConfig.IsEmpty()) + { + TArray> jsonArray; - loginConfigMap->SetObjectField(item.Key, loginConfigObject); + for (const FAuthConnectionConfig& Config : web3AuthOptions.authConnectionConfig) + { + TSharedPtr JsonObject = MakeShared(); + if (FJsonObjectConverter::UStructToJsonObject(FAuthConnectionConfig::StaticStruct(), &Config, JsonObject.ToSharedRef(), 0, 0)) + { + jsonArray.Add(MakeShared(JsonObject)); + } } - TSharedRef> Writer = TJsonWriterFactory<>::Create(&output); - FJsonSerializer::Serialize(loginConfigMap.ToSharedRef(), Writer); + FString Output; + TSharedRef> Writer = TJsonWriterFactory<>::Create(&Output); + FJsonSerializer::Serialize(jsonArray, Writer); - initParams->SetStringField("loginConfig", output); + initParams->SetStringField("authConnectionConfig", Output); + } + else + { + FString emptyArrayJson = TEXT("[]"); + initParams->SetStringField("authConnectionConfig", emptyArrayJson); } paramMap->SetObjectField("options", initParams.ToSharedRef()); @@ -236,27 +244,27 @@ void UWeb3Auth::processRequest(FString path, FLoginParams* loginParams = nullptr TSharedRef< TJsonWriter<> > jsonWriter = TJsonWriterFactory<>::Create(&json); FJsonSerializer::Serialize(paramMap.ToSharedRef(), jsonWriter); - if (web3AuthOptions.buildEnv == FBuildEnv::STAGING) { - web3AuthOptions.sdkUrl = "https://staging-auth.web3auth.io/v9"; + if (web3AuthOptions.authBuildEnv == FBuildEnv::STAGING) { + web3AuthOptions.sdkUrl = "https://staging-auth.web3auth.io/v10"; } - else if(web3AuthOptions.buildEnv == FBuildEnv::TESTING) { + else if(web3AuthOptions.authBuildEnv == FBuildEnv::TESTING) { web3AuthOptions.sdkUrl = "https://develop-auth.web3auth.io"; } else { - web3AuthOptions.sdkUrl = "https://auth.web3auth.io/v9"; + web3AuthOptions.sdkUrl = "https://auth.web3auth.io/v10"; } - if (web3AuthOptions.buildEnv == FBuildEnv::STAGING) { - web3AuthOptions.walletSdkUrl = "https://staging-wallet.web3auth.io/v3"; - } else if (web3AuthOptions.buildEnv == FBuildEnv::TESTING) { + if (web3AuthOptions.authBuildEnv == FBuildEnv::STAGING) { + web3AuthOptions.walletSdkUrl = "https://staging-wallet.web3auth.io/v4"; + } else if (web3AuthOptions.authBuildEnv == FBuildEnv::TESTING) { web3AuthOptions.walletSdkUrl = "https://develop-wallet.web3auth.io"; } else { - web3AuthOptions.walletSdkUrl = "https://wallet.web3auth.io/v3"; + web3AuthOptions.walletSdkUrl = "https://wallet.web3auth.io/v4"; } createSession(json, 600, false, "*"); } -void UWeb3Auth::launchWalletServices(FChainConfig chainConfig) { +void UWeb3Auth::showWalletUI(const TArray& chainConfig, const FString& chainId) { this->sessionId = keyStoreUtils->GetSessionId(); if (!this->sessionId.IsEmpty()) { TSharedPtr paramMap = MakeShareable(new FJsonObject); @@ -264,7 +272,7 @@ void UWeb3Auth::launchWalletServices(FChainConfig chainConfig) { TSharedPtr initParams = MakeShareable(new FJsonObject); initParams->SetStringField("clientId", web3AuthOptions.clientId); - switch (web3AuthOptions.network) { + switch (web3AuthOptions.web3AuthNetwork) { case FNetwork::MAINNET: initParams->SetStringField("network", "mainnet"); break; @@ -310,7 +318,7 @@ void UWeb3Auth::launchWalletServices(FChainConfig chainConfig) { } #endif - switch (web3AuthOptions.buildEnv) { + switch (web3AuthOptions.authBuildEnv) { case FBuildEnv::PRODUCTION: initParams->SetStringField("buildEnv", "production"); break; @@ -347,29 +355,47 @@ void UWeb3Auth::launchWalletServices(FChainConfig chainConfig) { initParams->SetStringField("originData", jsonString); } - FString chainConfigOutput; - FJsonObjectConverter::UStructToJsonObjectString(FChainConfig::StaticStruct(), &chainConfig, chainConfigOutput); - initParams->SetStringField("chainConfig", chainConfigOutput); + TArray> JsonArray; - if (!web3AuthOptions.loginConfig.IsEmpty()) { - FString output; + for (const FChainConfig& Config : chainConfig) + { + TSharedPtr JsonObject = MakeShared(); + if (FJsonObjectConverter::UStructToJsonObject(FChainConfig::StaticStruct(), &Config, JsonObject.ToSharedRef(), 0, 0)) + { + JsonArray.Add(MakeShared(JsonObject)); + } + } + FString chainConfigOutput; + TSharedRef> Writer = TJsonWriterFactory<>::Create(&chainConfigOutput); + FJsonSerializer::Serialize(JsonArray, Writer); + initParams->SetStringField("chains", chainConfigOutput); - TSharedPtr loginConfigMap = MakeShareable(new FJsonObject); + initParams->SetStringField("chainId", chainId); - for (auto item: web3AuthOptions.loginConfig) { - TSharedPtr loginConfigObject = MakeShareable(new FJsonObject); - FJsonObjectConverter::UStructToJsonObject(FLoginConfigItem::StaticStruct(), - &item.Value, - loginConfigObject.ToSharedRef(), 0, 0); + if (!web3AuthOptions.authConnectionConfig.IsEmpty()) + { + TArray> JsonArray; - loginConfigMap->SetObjectField(item.Key, loginConfigObject); - } + for (const FAuthConnectionConfig& Config : web3AuthOptions.authConnectionConfig) + { + TSharedPtr JsonObject = MakeShared(); + if (FJsonObjectConverter::UStructToJsonObject(FAuthConnectionConfig::StaticStruct(), &Config, JsonObject.ToSharedRef(), 0, 0)) + { + JsonArray.Add(MakeShared(JsonObject)); + } + } - TSharedRef > Writer = TJsonWriterFactory<>::Create(&output); - FJsonSerializer::Serialize(loginConfigMap.ToSharedRef(), Writer); + FString Output; + TSharedRef> Writer = TJsonWriterFactory<>::Create(&Output); + FJsonSerializer::Serialize(JsonArray, Writer); - initParams->SetStringField("loginConfig", output); - } + initParams->SetStringField("authConnectionConfig", Output); + } + else + { + FString emptyArrayJson = TEXT("[]"); + initParams->SetStringField("authConnectionConfig", emptyArrayJson); + } paramMap->SetObjectField("options", initParams.ToSharedRef()); paramMap->SetStringField("actionType", "login"); @@ -378,12 +404,12 @@ void UWeb3Auth::launchWalletServices(FChainConfig chainConfig) { TSharedRef > jsonWriter = TJsonWriterFactory<>::Create(&json); FJsonSerializer::Serialize(paramMap.ToSharedRef(), jsonWriter); - if (web3AuthOptions.buildEnv == FBuildEnv::STAGING) { - web3AuthOptions.walletSdkUrl = "https://staging-wallet.web3auth.io/v3"; - } else if (web3AuthOptions.buildEnv == FBuildEnv::TESTING) { + if (web3AuthOptions.authBuildEnv == FBuildEnv::STAGING) { + web3AuthOptions.walletSdkUrl = "https://staging-wallet.web3auth.io/v4"; + } else if (web3AuthOptions.authBuildEnv == FBuildEnv::TESTING) { web3AuthOptions.walletSdkUrl = "https://develop-wallet.web3auth.io"; } else { - web3AuthOptions.walletSdkUrl = "https://wallet.web3auth.io/v3"; + web3AuthOptions.walletSdkUrl = "https://wallet.web3auth.io/v4"; } createSession(json, 86400, true, "*"); @@ -421,7 +447,7 @@ void UWeb3Auth::request(FChainConfig chainConfig, FString method, TArray initParams = MakeShareable(new FJsonObject); initParams->SetStringField("clientId", web3AuthOptions.clientId); - switch (web3AuthOptions.network) { + switch (web3AuthOptions.web3AuthNetwork) { case FNetwork::MAINNET: initParams->SetStringField("network", "mainnet"); break; @@ -467,7 +493,7 @@ void UWeb3Auth::request(FChainConfig chainConfig, FString method, TArraySetStringField("buildEnv", "production"); break; @@ -491,25 +517,30 @@ void UWeb3Auth::request(FChainConfig chainConfig, FString method, TArraySetStringField("chainConfig", chainConfigOutput); - if (!web3AuthOptions.loginConfig.IsEmpty()) { - FString output; - - TSharedPtr loginConfigMap = MakeShareable(new FJsonObject); - - for (auto item: web3AuthOptions.loginConfig) { - TSharedPtr loginConfigObject = MakeShareable(new FJsonObject); - FJsonObjectConverter::UStructToJsonObject(FLoginConfigItem::StaticStruct(), - &item.Value, - loginConfigObject.ToSharedRef(), 0, 0); + if (!web3AuthOptions.authConnectionConfig.IsEmpty()) + { + TArray> JsonArray; - loginConfigMap->SetObjectField(item.Key, loginConfigObject); - } + for (const FAuthConnectionConfig& Config : web3AuthOptions.authConnectionConfig) + { + TSharedPtr JsonObject = MakeShared(); + if (FJsonObjectConverter::UStructToJsonObject(FAuthConnectionConfig::StaticStruct(), &Config, JsonObject.ToSharedRef(), 0, 0)) + { + JsonArray.Add(MakeShared(JsonObject)); + } + } - TSharedRef > Writer = TJsonWriterFactory<>::Create(&output); - FJsonSerializer::Serialize(loginConfigMap.ToSharedRef(), Writer); + FString Output; + TSharedRef> Writer = TJsonWriterFactory<>::Create(&Output); + FJsonSerializer::Serialize(JsonArray, Writer); - initParams->SetStringField("loginConfig", output); - } + initParams->SetStringField("authConnectionConfig", Output); + } + else + { + FString emptyArrayJson = TEXT("[]"); + initParams->SetStringField("authConnectionConfig", emptyArrayJson); + } paramMap->SetObjectField("options", initParams.ToSharedRef()); //paramMap->SetStringField("actionType", "login"); @@ -518,12 +549,12 @@ void UWeb3Auth::request(FChainConfig chainConfig, FString method, TArray> jsonWriter = TJsonWriterFactory<>::Create(&json); FJsonSerializer::Serialize(paramMap.ToSharedRef(), jsonWriter); - if (web3AuthOptions.buildEnv == FBuildEnv::STAGING) { - web3AuthOptions.walletSdkUrl = "https://staging-wallet.web3auth.io/v3"; - } else if (web3AuthOptions.buildEnv == FBuildEnv::TESTING) { + if (web3AuthOptions.authBuildEnv == FBuildEnv::STAGING) { + web3AuthOptions.walletSdkUrl = "https://staging-wallet.web3auth.io4"; + } else if (web3AuthOptions.authBuildEnv == FBuildEnv::TESTING) { web3AuthOptions.walletSdkUrl = "https://develop-wallet.web3auth.io"; } else { - web3AuthOptions.walletSdkUrl = "https://wallet.web3auth.io/v3"; + web3AuthOptions.walletSdkUrl = "https://wallet.web3auth.io/v4"; } //createSession(json, 86400, true); @@ -853,8 +884,8 @@ void UWeb3Auth::authorizeSession() { FString pubKey = crypto->generatePublicKey(this->sessionId); FString session = this->sessionId; FString origin = this->redirecturl; - //UE_LOG(LogTemp, Warning, TEXT("In authorizeSession Session-ID: %s"), *session); - //UE_LOG(LogTemp, Warning, TEXT("In authorizeSession Origin: %s"), *origin); + //UE_LOG(LogTemp, Warning, TEXT ("In authorizeSession Session-ID: %s"), *session); + //UE_LOG(LogTemp, Warning, TEXT ("In authorizeSession Origin: %s"), *origin); if(origin.IsEmpty()) { origin = keyStoreUtils->GetRedirectUrl(); } @@ -996,7 +1027,7 @@ void UWeb3Auth::fetchProjectConfig() { FString network; - switch (web3AuthOptions.network) + switch (web3AuthOptions.web3AuthNetwork) { case FNetwork::MAINNET: network = "mainnet"; diff --git a/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/Web3Auth.h b/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/Web3Auth.h index 09848f5..002bdfd 100644 --- a/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/Web3Auth.h +++ b/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/Web3Auth.h @@ -44,7 +44,7 @@ enum class FPrompt : uint8 }; UENUM(BlueprintType) -enum class FProvider : uint8 +enum class FAuthConnection : uint8 { GOOGLE, FACEBOOK, @@ -61,30 +61,7 @@ enum class FProvider : uint8 WECHAT, EMAIL_PASSWORDLESS, EMAIL_PASSWORD, - JWT, - SMS_PASSWORDLESS, - FARCASTER -}; - -UENUM(BlueprintType) -enum class FTypeOfLogin : uint8 -{ - GOOGLE, - FACEBOOK, - REDDIT, - DISCORD, - TWITCH, - APPLE, - LINE, - GITHUB, - KAKAO, - LINKEDIN, - TWITTER, - WEIBO, - WECHAT, - EMAIL_PASSWORDLESS, - EMAIL_PASSWORD, - JWT, + CUSTOM, SMS_PASSWORDLESS, FARCASTER }; @@ -290,15 +267,15 @@ struct WEB3AUTHSDK_API FExtraLoginOptions }; USTRUCT(BlueprintType) -struct FLoginConfigItem +struct FAuthConnectionConfig { GENERATED_BODY() UPROPERTY(EditAnywhere, BlueprintReadWrite) - FString verifier; + FString authConnectionId; UPROPERTY(EditAnywhere, BlueprintReadWrite) - FString typeOfLogin; + FString authConnection; UPROPERTY(EditAnywhere, BlueprintReadWrite) FString name; @@ -332,16 +309,16 @@ struct FLoginConfigItem UPROPERTY(EditAnywhere, BlueprintReadWrite) bool showOnMobile; - FLoginConfigItem() {}; + FAuthConnectionConfig() {}; - bool operator== (const FLoginConfigItem& other) { + bool operator== (const FAuthConnectionConfig& other) { return other.clientId == clientId; } }; -FORCEINLINE uint32 GetTypeHash(const FLoginConfigItem& other) { +FORCEINLINE uint32 GetTypeHash(const FAuthConnectionConfig& other) { return GetTypeHash(other.clientId); } @@ -352,7 +329,7 @@ struct FLoginParams GENERATED_BODY() UPROPERTY(EditAnywhere, BlueprintReadWrite) - FString loginProvider; + FString authConnection; UPROPERTY(EditAnywhere, BlueprintReadWrite) FString dappShare; @@ -386,8 +363,8 @@ struct FLoginParams if (!dappShare.IsEmpty()) output.SetStringField("dappShare", dappShare); - if (!loginProvider.IsEmpty()) - output.SetStringField("loginProvider", loginProvider); + if (!authConnection.IsEmpty()) + output.SetStringField("authConnection", authConnection); if (!redirectUrl.IsEmpty()) output.SetStringField("redirectUrl", redirectUrl); @@ -418,16 +395,16 @@ struct FUserInfo FString profileImage; UPROPERTY(EditAnywhere, BlueprintReadWrite) - FString aggregateVerifier; + FString groupedAuthConnectionId; UPROPERTY(EditAnywhere, BlueprintReadWrite) - FString verifier; + FString authConnectionId; UPROPERTY(EditAnywhere, BlueprintReadWrite) - FString verifierId; + FString userId; UPROPERTY(EditAnywhere, BlueprintReadWrite) - FString typeOfLogin; + FString authConnection; UPROPERTY(EditAnywhere, BlueprintReadWrite) FString dappShare; @@ -450,10 +427,10 @@ struct FUserInfo return email.IsEmpty() && name.IsEmpty() && profileImage.IsEmpty() - && aggregateVerifier.IsEmpty() - && verifier.IsEmpty() - && verifierId.IsEmpty() - && typeOfLogin.IsEmpty() + && groupedAuthConnectionId.IsEmpty() + && authConnectionId.IsEmpty() + && userId.IsEmpty() + && authConnection.IsEmpty() && dappShare.IsEmpty() && idToken.IsEmpty() && oAuthIdToken.IsEmpty() @@ -462,7 +439,7 @@ struct FUserInfo FString ToString() const { return FString::Printf(TEXT("email: %s, name: %s, profileImage: %s, aggregateVerifier: %s, verifier: %s, verifierId: %s, typeOfLogin: %s, dappShare: %s, idToken: %s, oAuthIdToken: %s, oAuthAccessToken: %s, isMfaEnabled: %d"), - *email, *name, *profileImage, *aggregateVerifier, *verifier, *verifierId, *typeOfLogin, *dappShare, *idToken, *oAuthIdToken, *oAuthAccessToken, isMfaEnabled); + *email, *name, *profileImage, *groupedAuthConnectionId, *authConnectionId, *userId, *authConnection, *dappShare, *idToken, *oAuthIdToken, *oAuthAccessToken, isMfaEnabled); } }; @@ -609,22 +586,22 @@ struct FWeb3AuthOptions FString redirectUrl; UPROPERTY(EditAnywhere, BlueprintReadWrite) - FString sdkUrl = "https://sdk.openlogin.com/v9"; + FString sdkUrl = "https://auth.web3auth.io/v10"; UPROPERTY(EditAnywhere, BlueprintReadWrite) - FString walletSdkUrl = "https://wallet.web3auth.io/v3"; + FString walletSdkUrl = "https://wallet.web3auth.io/v4"; UPROPERTY(EditAnywhere, BlueprintReadWrite) - FNetwork network; + FNetwork web3AuthNetwork; UPROPERTY(EditAnywhere, BlueprintReadWrite) - FBuildEnv buildEnv; + FBuildEnv authBuildEnv; UPROPERTY(EditAnywhere, BlueprintReadWrite) FWhiteLabelData whiteLabel; UPROPERTY(BlueprintReadWrite) - TMap loginConfig; + TArray authConnectionConfig = {}; UPROPERTY(EditAnywhere, BlueprintReadWrite) FChainNamespace chainNamespace; @@ -651,10 +628,10 @@ struct FWeb3AuthOptions redirectUrl = other.redirectUrl; sdkUrl = other.sdkUrl; redirectUrl = other.redirectUrl; - network = other.network; - buildEnv = other.buildEnv; + web3AuthNetwork = other.web3AuthNetwork; + authBuildEnv = other.authBuildEnv; whiteLabel = other.whiteLabel; - loginConfig = other.loginConfig; + authConnectionConfig = other.authConnectionConfig; chainNamespace = other.chainNamespace; useCoreKitKey = other.useCoreKitKey; mfaSettings = other.mfaSettings; @@ -763,7 +740,7 @@ class WEB3AUTHSDK_API UWeb3Auth : public UGameInstanceSubsystem void enableMFA(FLoginParams loginParams); UFUNCTION(BlueprintCallable) - void launchWalletServices(FChainConfig chainConfig); + void showWalletUI(const TArray& chainConfig, const FString& chainId); UFUNCTION(BlueprintCallable) void request(FChainConfig chainConfig, FString method, TArray requestParams, FString path = "wallet/request"); From 1cbea3e086f7377c2261824dc65d3173650e3d80 Mon Sep 17 00:00:00 2001 From: Gaurav Goel Date: Wed, 14 May 2025 11:59:15 +0530 Subject: [PATCH 3/6] feat: Update FLoginParams Signed-off-by: Gaurav Goel --- .../Source/Web3AuthSDK/Public/Web3Auth.h | 43 ++++++++++++------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/Web3Auth.h b/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/Web3Auth.h index 002bdfd..6818fc3 100644 --- a/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/Web3Auth.h +++ b/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/Web3Auth.h @@ -287,7 +287,7 @@ struct FAuthConnectionConfig FString clientId; UPROPERTY(EditAnywhere, BlueprintReadWrite) - FString verifierSubIdentifier; + FString groupedAuthConnectionId; UPROPERTY(EditAnywhere, BlueprintReadWrite) FString logoHover; @@ -331,6 +331,12 @@ struct FLoginParams UPROPERTY(EditAnywhere, BlueprintReadWrite) FString authConnection; + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FString authConnectionId; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FString groupedAuthConnectionId; + UPROPERTY(EditAnywhere, BlueprintReadWrite) FString dappShare; @@ -366,6 +372,12 @@ struct FLoginParams if (!authConnection.IsEmpty()) output.SetStringField("authConnection", authConnection); + if (!authConnectionId.IsEmpty()) + output.SetStringField("authConnectionId", authConnectionId); + + if (!groupedAuthConnectionId.IsEmpty()) + output.SetStringField("groupedAuthConnectionId", groupedAuthConnectionId); + if (!redirectUrl.IsEmpty()) output.SetStringField("redirectUrl", redirectUrl); @@ -579,46 +591,46 @@ struct FWeb3AuthOptions { GENERATED_BODY() - UPROPERTY(EditAnywhere, BlueprintReadWrite) + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") FString clientId; - UPROPERTY(EditAnywhere, BlueprintReadWrite) + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") FString redirectUrl; - UPROPERTY(EditAnywhere, BlueprintReadWrite) + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") FString sdkUrl = "https://auth.web3auth.io/v10"; - UPROPERTY(EditAnywhere, BlueprintReadWrite) + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") FString walletSdkUrl = "https://wallet.web3auth.io/v4"; - UPROPERTY(EditAnywhere, BlueprintReadWrite) + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") FNetwork web3AuthNetwork; - UPROPERTY(EditAnywhere, BlueprintReadWrite) + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") FBuildEnv authBuildEnv; - UPROPERTY(EditAnywhere, BlueprintReadWrite) + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") FWhiteLabelData whiteLabel; - UPROPERTY(BlueprintReadWrite) + UPROPERTY(Config, BlueprintReadWrite, Category="Web3Auth Options") TArray authConnectionConfig = {}; - UPROPERTY(EditAnywhere, BlueprintReadWrite) + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") FChainNamespace chainNamespace; - UPROPERTY(EditAnywhere, BlueprintReadWrite) + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") bool useCoreKitKey; - UPROPERTY(EditAnywhere, BlueprintReadWrite) + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") FMfaSettings mfaSettings; - UPROPERTY(EditAnywhere, BlueprintReadWrite) + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") int32 sessionTime = 86400; - UPROPERTY(EditAnywhere, BlueprintReadWrite) + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") FChainConfig chainConfig; - UPROPERTY(EditAnywhere, BlueprintReadWrite) + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") TMap originData; FWeb3AuthOptions() {}; @@ -638,6 +650,7 @@ struct FWeb3AuthOptions sessionTime = other.sessionTime; chainConfig = other.chainConfig; originData = other.originData; + useCoreKitKey = other.useCoreKitKey; } }; From ab43a03aa95f1df44b8512a6808a291d5c04d2c4 Mon Sep 17 00:00:00 2001 From: Gaurav Goel Date: Wed, 14 May 2025 19:42:34 +0530 Subject: [PATCH 4/6] feat: update wallet-services to v5 version Signed-off-by: Gaurav Goel --- .../Web3AuthSDK/Content/AuthInterface.uasset | Bin 376489 -> 375373 bytes .../Source/Web3AuthSDK/Private/Web3Auth.cpp | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Plugins/Web3AuthSDK/Content/AuthInterface.uasset b/Plugins/Web3AuthSDK/Content/AuthInterface.uasset index 2dc944685b7485319c76c79bca654c890eb9ad76..a95bece14fc339b8d253f2e515ab4a694495d4f4 100644 GIT binary patch delta 13825 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 chainConfig, const FStr FJsonSerializer::Serialize(paramMap.ToSharedRef(), jsonWriter); if (web3AuthOptions.authBuildEnv == FBuildEnv::STAGING) { - web3AuthOptions.walletSdkUrl = "https://staging-wallet.web3auth.io/v4"; + web3AuthOptions.walletSdkUrl = "https://staging-wallet.web3auth.io/v5"; } else if (web3AuthOptions.authBuildEnv == FBuildEnv::TESTING) { web3AuthOptions.walletSdkUrl = "https://develop-wallet.web3auth.io"; } else { - web3AuthOptions.walletSdkUrl = "https://wallet.web3auth.io/v4"; + web3AuthOptions.walletSdkUrl = "https://wallet.web3auth.io/v5"; } createSession(json, 86400, true, "*"); @@ -550,11 +550,11 @@ void UWeb3Auth::request(FChainConfig chainConfig, FString method, TArray Date: Thu, 15 May 2025 11:22:41 +0530 Subject: [PATCH 5/6] feat: update Web3Auth.h Signed-off-by: Gaurav Goel --- .../Source/Web3AuthSDK/Public/Web3Auth.h | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/Web3Auth.h b/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/Web3Auth.h index 6818fc3..e61b9ed 100644 --- a/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/Web3Auth.h +++ b/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/Web3Auth.h @@ -118,7 +118,7 @@ struct WEB3AUTHSDK_API FExtraLoginOptions FString leeway; UPROPERTY(EditAnywhere, BlueprintReadWrite) - FString verifierIdField; + FString userIdField; UPROPERTY(EditAnywhere, BlueprintReadWrite) FString max_age; @@ -160,7 +160,7 @@ struct WEB3AUTHSDK_API FExtraLoginOptions FString redirect_uri; UPROPERTY(EditAnywhere, BlueprintReadWrite) - bool isVerifierIdCaseSensitive; + bool isUserIdCaseSensitive; UPROPERTY(EditAnywhere, BlueprintReadWrite) FDisplay display; @@ -182,8 +182,8 @@ struct WEB3AUTHSDK_API FExtraLoginOptions if (!leeway.IsEmpty()) output->SetStringField("leeway", leeway); - if (!verifierIdField.IsEmpty()) - output->SetStringField("verifierIdField", verifierIdField); + if (!userIdField.IsEmpty()) + output->SetStringField("userIdField", userIdField); if (!max_age.IsEmpty()) output->SetStringField("max_age", max_age); @@ -229,7 +229,7 @@ struct WEB3AUTHSDK_API FExtraLoginOptions return nullptr; } - output->SetBoolField("isVerifierIdCaseSensitive", isVerifierIdCaseSensitive); + output->SetBoolField("isUserIdCaseSensitive", isUserIdCaseSensitive); switch (display) { case FDisplay::PAGE: @@ -632,6 +632,9 @@ struct FWeb3AuthOptions UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") TMap originData; + + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") + bool includeUserDataInToken; FWeb3AuthOptions() {}; @@ -650,7 +653,7 @@ struct FWeb3AuthOptions sessionTime = other.sessionTime; chainConfig = other.chainConfig; originData = other.originData; - useCoreKitKey = other.useCoreKitKey; + includeUserDataInToken = other.includeUserDataInToken; } }; From ca0fcfd3bcfa364b38c17220839d7ae7933a154f Mon Sep 17 00:00:00 2001 From: Gaurav Goel Date: Tue, 20 May 2025 09:30:07 +0530 Subject: [PATCH 6/6] feat: Update method names Signed-off-by: Gaurav Goel --- Plugins/Web3AuthSDK/Source/Web3AuthSDK/Private/Web3Auth.cpp | 4 ++-- Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/Web3Auth.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Private/Web3Auth.cpp b/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Private/Web3Auth.cpp index 52605bf..7a20d17 100644 --- a/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Private/Web3Auth.cpp +++ b/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Private/Web3Auth.cpp @@ -851,7 +851,7 @@ void UWeb3Auth::callBackFromWebAuthenticateIOS(NSString* sResult) { #endif -FString UWeb3Auth::getPrivKey() { +FString UWeb3Auth::getPrivateKey() { if (web3AuthResponse.coreKitKey.IsEmpty() || web3AuthResponse.privKey.IsEmpty()) { return ""; } @@ -859,7 +859,7 @@ FString UWeb3Auth::getPrivKey() { return web3AuthOptions.useCoreKitKey ? web3AuthResponse.coreKitKey : web3AuthResponse.privKey; } -FString UWeb3Auth::getEd25519PrivKey() { +FString UWeb3Auth::getEd25519PrivateKey() { if (web3AuthResponse.coreKitEd25519PrivKey.IsEmpty() || web3AuthResponse.ed25519PrivKey.IsEmpty()) { return ""; } diff --git a/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/Web3Auth.h b/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/Web3Auth.h index e61b9ed..232ce2a 100644 --- a/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/Web3Auth.h +++ b/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/Web3Auth.h @@ -782,10 +782,10 @@ class WEB3AUTHSDK_API UWeb3Auth : public UGameInstanceSubsystem } UFUNCTION(BlueprintCallable) - FString getPrivKey(); + FString getPrivateKey(); UFUNCTION(BlueprintCallable) - FString getEd25519PrivKey(); + FString getEd25519PrivateKey(); UFUNCTION(BlueprintCallable) FUserInfo getUserInfo();