diff --git a/Content/Example.umap b/Content/Example.umap index b4c64ce..5a2e549 100644 Binary files a/Content/Example.umap and b/Content/Example.umap differ diff --git a/Plugins/Web3AuthSDK/Content/AuthInterface.uasset b/Plugins/Web3AuthSDK/Content/AuthInterface.uasset index 81af856..a95bece 100644 Binary files a/Plugins/Web3AuthSDK/Content/AuthInterface.uasset and b/Plugins/Web3AuthSDK/Content/AuthInterface.uasset differ diff --git a/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Private/Web3Auth.cpp b/Plugins/Web3AuthSDK/Source/Web3AuthSDK/Private/Web3Auth.cpp index d92c190..7a20d17 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/v5"; + } 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/v5"; } 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/v5"; + } 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/v5"; } 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.io/v5"; + } 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/v5"; } //createSession(json, 86400, true); @@ -707,12 +738,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)); @@ -811,7 +851,7 @@ void UWeb3Auth::callBackFromWebAuthenticateIOS(NSString* sResult) { #endif -FString UWeb3Auth::getPrivKey() { +FString UWeb3Auth::getPrivateKey() { if (web3AuthResponse.coreKitKey.IsEmpty() || web3AuthResponse.privKey.IsEmpty()) { return ""; } @@ -819,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 ""; } @@ -844,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(); } @@ -987,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..232ce2a 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 }; @@ -141,7 +118,7 @@ struct WEB3AUTHSDK_API FExtraLoginOptions FString leeway; UPROPERTY(EditAnywhere, BlueprintReadWrite) - FString verifierIdField; + FString userIdField; UPROPERTY(EditAnywhere, BlueprintReadWrite) FString max_age; @@ -183,7 +160,7 @@ struct WEB3AUTHSDK_API FExtraLoginOptions FString redirect_uri; UPROPERTY(EditAnywhere, BlueprintReadWrite) - bool isVerifierIdCaseSensitive; + bool isUserIdCaseSensitive; UPROPERTY(EditAnywhere, BlueprintReadWrite) FDisplay display; @@ -205,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); @@ -252,7 +229,7 @@ struct WEB3AUTHSDK_API FExtraLoginOptions return nullptr; } - output->SetBoolField("isVerifierIdCaseSensitive", isVerifierIdCaseSensitive); + output->SetBoolField("isUserIdCaseSensitive", isUserIdCaseSensitive); switch (display) { case FDisplay::PAGE: @@ -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; @@ -310,7 +287,7 @@ struct FLoginConfigItem FString clientId; UPROPERTY(EditAnywhere, BlueprintReadWrite) - FString verifierSubIdentifier; + FString groupedAuthConnectionId; UPROPERTY(EditAnywhere, BlueprintReadWrite) FString logoHover; @@ -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,13 @@ struct FLoginParams GENERATED_BODY() UPROPERTY(EditAnywhere, BlueprintReadWrite) - FString loginProvider; + FString authConnection; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FString authConnectionId; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FString groupedAuthConnectionId; UPROPERTY(EditAnywhere, BlueprintReadWrite) FString dappShare; @@ -386,9 +369,15 @@ struct FLoginParams if (!dappShare.IsEmpty()) output.SetStringField("dappShare", dappShare); - if (!loginProvider.IsEmpty()) - output.SetStringField("loginProvider", loginProvider); + 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); @@ -418,16 +407,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 +439,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 +451,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); } }; @@ -602,47 +591,50 @@ 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) - FString sdkUrl = "https://sdk.openlogin.com/v9"; + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") + FString sdkUrl = "https://auth.web3auth.io/v10"; - UPROPERTY(EditAnywhere, BlueprintReadWrite) - FString walletSdkUrl = "https://wallet.web3auth.io/v3"; + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") + FString walletSdkUrl = "https://wallet.web3auth.io/v4"; - UPROPERTY(EditAnywhere, BlueprintReadWrite) - FNetwork network; + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") + FNetwork web3AuthNetwork; - UPROPERTY(EditAnywhere, BlueprintReadWrite) - FBuildEnv buildEnv; + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") + FBuildEnv authBuildEnv; - UPROPERTY(EditAnywhere, BlueprintReadWrite) + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") FWhiteLabelData whiteLabel; - UPROPERTY(BlueprintReadWrite) - TMap loginConfig; + 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; + + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="Web3Auth Options") + bool includeUserDataInToken; FWeb3AuthOptions() {}; @@ -651,16 +643,17 @@ 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; sessionTime = other.sessionTime; chainConfig = other.chainConfig; originData = other.originData; + includeUserDataInToken = other.includeUserDataInToken; } }; @@ -763,7 +756,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"); @@ -789,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(); 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": [