From 5a430a721d45aef6b39d3bf88cc71883581bd75e Mon Sep 17 00:00:00 2001 From: ThomazFB Date: Mon, 23 Oct 2023 13:11:03 -0300 Subject: [PATCH] Update Login2FaFragment callback interface and payloads --- .../wordpress/android/login/Login2FaFragment.java | 15 +++++++++++++-- .../wordpress/android/login/LoginListener.java | 4 ++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/WordPressLoginFlow/src/main/java/org/wordpress/android/login/Login2FaFragment.java b/WordPressLoginFlow/src/main/java/org/wordpress/android/login/Login2FaFragment.java index d468f59ef1..94f8e73654 100644 --- a/WordPressLoginFlow/src/main/java/org/wordpress/android/login/Login2FaFragment.java +++ b/WordPressLoginFlow/src/main/java/org/wordpress/android/login/Login2FaFragment.java @@ -32,6 +32,7 @@ import org.wordpress.android.fluxc.store.AccountStore.AuthenticationErrorType; import org.wordpress.android.fluxc.store.AccountStore.OnAuthenticationChanged; import org.wordpress.android.fluxc.store.AccountStore.OnSocialChanged; +import org.wordpress.android.fluxc.store.AccountStore.OnWebauthnChallengeReceived; import org.wordpress.android.fluxc.store.AccountStore.PushSecurityKeyPayload; import org.wordpress.android.fluxc.store.AccountStore.PushSocialAuthPayload; import org.wordpress.android.fluxc.store.AccountStore.PushSocialPayload; @@ -336,8 +337,8 @@ private void doAuthWithSecurityKeyAction() { if (!NetworkUtils.checkConnection(getActivity())) { return; } - - PushSecurityKeyPayload payload = new PushSecurityKeyPayload(mUserId, mNonce); + //TODO: Check if security key is available, if not, trigger PushSecurityKeyPayload + PushSecurityKeyPayload payload = new PushSecurityKeyPayload(mEmailAddress, mPassword); mDispatcher.dispatch(AuthenticationActionBuilder.newAuthenticateSecurityKeyAction(payload)); } @@ -554,4 +555,14 @@ private void setTextForSms() { mOtpButton.setText(getString(R.string.login_text_otp_another)); mSentSmsCode = true; } + + @SuppressWarnings("unused") + @Subscribe(threadMode = ThreadMode.MAIN) + public void onWebauthnChallengeReceived(OnWebauthnChallengeReceived event) { + if (event.isError()) { + //TODO: Handle error + return; + } + mLoginListener.signSecurityKey(event.challengeInfo); + } } diff --git a/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginListener.java b/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginListener.java index ade1b97801..61cc3c8cbb 100644 --- a/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginListener.java +++ b/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginListener.java @@ -6,6 +6,7 @@ import androidx.annotation.Nullable; import org.wordpress.android.fluxc.network.MemorizingTrustManager; +import org.wordpress.android.fluxc.network.rest.wpcom.auth.passkey.WebauthnChallengeInfo; import org.wordpress.android.fluxc.store.SiteStore; import org.wordpress.android.fluxc.store.SiteStore.ConnectSiteInfoPayload; @@ -50,8 +51,7 @@ void gotUnregisteredSocialAccount(String email, String displayName, String idTok void needs2fa(String email, String password); void needs2faSocial(String email, String userId, String nonceAuthenticator, String nonceBackup, String nonceSms); void needs2faSocialConnect(String email, String password, String idToken, String service); - void needsSecurityKey(String userId, String nonceInfo); - void needsSocialSecurityKey(String userId, String nonceInfo); + void signSecurityKey(WebauthnChallengeInfo challengeInfo); void loggedInViaPassword(ArrayList oldSitesIds); void helpEmailPasswordScreen(String email);