Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add credential manager support #10647

Merged
merged 10 commits into from
Feb 16, 2024
Merged

Conversation

ThomazFB
Copy link
Contributor

@ThomazFB ThomazFB commented Jan 29, 2024

Summary

It brings to the Woo app the rework of the Passkey fetching system inside the WordPress Login Library, where instead of relying on the FIDO2 API, it uses the Credential Manager. This will allow us to properly support Passkeys provided by third-party security services, like 1Password.

Screen capture

Screen_recording_20240201_124606.mp4

How to Test

⚠️ Pre-requisites

To make this test scenario possible, make sure you have the following:

  1. A WordPress.com account configured with Security key authentication.
  2. An operational 1Password account.
  3. An Android 14 device, emulators won't work, it must be a physical Android 14 device.
  4. A second device, Android or iOS, different from the Android 14 one mentioned in requirement 3.

Scenario 1 - Login with locally installed Passkey

  1. Open your Android device browser and access WordPress.com.
  2. Go to your Security settings and create a Security Key in your account using the device browser.
  3. Open the Woo app and start the login flow with the same WordPress.com account you used to create the Security Key.
  4. Once you hit the 2FA screen, make sure the Use security key button appears and click on it.
  5. Make sure the Credential Manager opens up with a selectable Passkey and select it.
  6. Verify that the login flow continues and succeeds.

Scenario 2 - Login with Passkey provided by 1Password

  1. Open your Mac browser and access WordPress.com in a browser containing the 1Password extension installed.
  2. Go to your Security settings and create a Security Key in your account using 1Password.
  3. Open the Woo app and start the login flow with the same WordPress.com account you used to create the Security Key.
  4. Once you hit the 2FA screen, make sure the Use security key button appears and click on it.
  5. Make sure the Credential Manager opens up with a selectable 1Password passkey option.
  6. Verify that the login flow continues and succeeds.

Scenario 3 - Login with Passkey provided by another device

  1. Take a device different from the Android 14 one you used in Scenario 1.
  2. Open this second device browser and access WordPress.com.
  3. Go to your Security settings and create a Security Key in your account using the device browser.
  4. Open the Woo app with the Android 14 device and start the login flow with the same WordPress.com account you used to create the Security Key.
  5. Once you hit the 2FA screen, make sure the Use security key button appears and click on it.
  6. Once the Credential Manager opens up, select the Sign-in options and select the login with another device option.
  7. Make sure a QR Code appears.
  8. Read this QR code with your SECONDARY device you used in step 1 to create a Passkey.
  9. Verify that both devices connects with each other and the Passkey is used from the Secondary device to the Android 14 one.
  10. Verify that the login flow continues and succeeds.

Update release notes:

  • I have considered if this change warrants user-facing release notes and have added them to RELEASE-NOTES.txt if necessary.

@ThomazFB ThomazFB changed the title ADd credential manager support Add credential manager support Jan 29, 2024
@wpmobilebot
Copy link
Collaborator

wpmobilebot commented Jan 29, 2024

📲 You can test the changes from this Pull Request in WooCommerce Android by scanning the QR code below to install the corresponding build.

App Name WooCommerce Android
FlavorJalapeno
Build TypeDebug
Commit150c454
Direct Downloadwoocommerce-prototype-build-pr10647-150c454.apk

@ThomazFB ThomazFB marked this pull request as ready for review February 13, 2024 00:37
@dangermattic
Copy link
Collaborator

1 Warning
⚠️ PR is not assigned to a milestone.

Generated by 🚫 Danger

Copy link
Contributor

@atorresveiga atorresveiga left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work @ThomazFB. I tested the three scenarios, and everything is working as expected. Thanks for also taking care of the fail scenario.

LGTM! :shipit:

@wpmobilebot
Copy link
Collaborator

Found 1 violations:

The PR caused the following dependency changes:

expand

 +--- androidx.navigation:navigation-dynamic-features-fragment:2.7.7
 |    \--- androidx.navigation:navigation-dynamic-features-runtime:2.7.7
 |         \--- com.google.android.play:feature-delivery:2.0.1
-|              +--- com.google.android.gms:play-services-basement:18.1.0
+|              +--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0
 |              \--- com.google.android.gms:play-services-tasks:18.0.2
-|                   \--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|                   \--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 +--- com.google.firebase:firebase-messaging -> 23.4.0
-|    +--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    +--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 |    +--- com.google.firebase:firebase-iid-interop:17.1.0
-|    |    \--- com.google.android.gms:play-services-basement:17.0.0 -> 18.1.0 (*)
+|    |    \--- com.google.android.gms:play-services-basement:17.0.0 -> 18.2.0 (*)
 |    +--- com.google.android.gms:play-services-base:18.0.1 -> 18.1.0
-|    |    \--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    |    \--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 |    +--- com.google.android.gms:play-services-cloud-messaging:17.1.0
-|    |    \--- com.google.android.gms:play-services-basement:18.0.0 -> 18.1.0 (*)
+|    |    \--- com.google.android.gms:play-services-basement:18.0.0 -> 18.2.0 (*)
 |    +--- com.google.android.gms:play-services-stats:17.0.2
-|    |    \--- com.google.android.gms:play-services-basement:18.0.0 -> 18.1.0 (*)
+|    |    \--- com.google.android.gms:play-services-basement:18.0.0 -> 18.2.0 (*)
 |    +--- com.google.firebase:firebase-measurement-connector:19.0.0
-|    |    \--- com.google.android.gms:play-services-basement:17.0.0 -> 18.1.0 (*)
+|    |    \--- com.google.android.gms:play-services-basement:17.0.0 -> 18.2.0 (*)
 |    \--- com.google.firebase:firebase-common:20.4.2
-|         \--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|         \--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 +--- com.google.firebase:firebase-config -> 21.6.0
 |    \--- com.google.firebase:firebase-abt:21.1.1
-|         \--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|         \--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 +--- com.google.firebase:firebase-analytics -> 21.5.0
 |    +--- com.google.android.gms:play-services-measurement:21.5.0
 |    |    +--- com.google.android.gms:play-services-ads-identifier:18.0.0
-|    |    |    \--- com.google.android.gms:play-services-basement:18.0.0 -> 18.1.0 (*)
+|    |    |    \--- com.google.android.gms:play-services-basement:18.0.0 -> 18.2.0 (*)
-|    |    +--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    |    +--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 |    |    +--- com.google.android.gms:play-services-measurement-base:21.5.0
-|    |    |    \--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    |    |    \--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 |    |    \--- com.google.android.gms:play-services-measurement-impl:21.5.0
-|    |         \--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    |         \--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 |    +--- com.google.android.gms:play-services-measurement-api:21.5.0
-|    |    +--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    |    +--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 |    |    \--- com.google.android.gms:play-services-measurement-sdk-api:21.5.0
-|    |         \--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    |         \--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 |    \--- com.google.android.gms:play-services-measurement-sdk:21.5.0
-|         \--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|         \--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
-+--- com.google.android.gms:play-services-auth:20.2.0
-|    +--- androidx.fragment:fragment:1.0.0 -> 1.6.2 (*)
-|    +--- androidx.loader:loader:1.0.0 (*)
-|    +--- com.google.android.gms:play-services-auth-api-phone:18.0.1
-|    |    +--- com.google.android.gms:play-services-base:18.0.1 -> 18.1.0 (*)
-|    |    +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.1.0 (*)
-|    |    \--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.0.2 (*)
-|    +--- com.google.android.gms:play-services-auth-base:18.0.1
-|    |    +--- androidx.collection:collection:1.0.0 -> 1.2.0 (*)
-|    |    +--- com.google.android.gms:play-services-base:18.0.1 -> 18.1.0 (*)
-|    |    +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.1.0 (*)
-|    |    \--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.0.2 (*)
-|    +--- com.google.android.gms:play-services-base:18.0.1 -> 18.1.0 (*)
-|    +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.1.0 (*)
-|    \--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.0.2 (*)
++--- com.google.android.gms:play-services-auth:20.2.0 -> 20.7.0
+|    +--- androidx.fragment:fragment:1.0.0 -> 1.6.2 (*)
+|    +--- androidx.loader:loader:1.0.0 (*)
+|    +--- com.google.android.gms:play-services-auth-api-phone:18.0.1
+|    |    +--- com.google.android.gms:play-services-base:18.0.1 -> 18.1.0 (*)
+|    |    +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.2.0 (*)
+|    |    \--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.0.2 (*)
+|    +--- com.google.android.gms:play-services-auth-base:18.0.4
+|    |    +--- androidx.collection:collection:1.0.0 -> 1.2.0 (*)
+|    |    +--- com.google.android.gms:play-services-base:18.0.1 -> 18.1.0 (*)
+|    |    +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.2.0 (*)
+|    |    \--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.0.2 (*)
+|    +--- com.google.android.gms:play-services-base:18.0.1 -> 18.1.0 (*)
+|    +--- com.google.android.gms:play-services-basement:18.2.0 (*)
+|    +--- com.google.android.gms:play-services-fido:20.0.1 -> 20.1.0
+|    |    +--- com.google.android.gms:play-services-base:18.0.1 -> 18.1.0 (*)
+|    |    +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.2.0 (*)
+|    |    \--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.0.2 (*)
+|    \--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.0.2 (*)
 +--- androidx.constraintlayout:constraintlayout:2.1.4
-|    \--- androidx.appcompat:appcompat:1.2.0 -> 1.5.0
-|         +--- androidx.activity:activity:1.5.0 -> 1.8.0 (*)
-|         +--- androidx.annotation:annotation:1.3.0 -> 1.7.0 (*)
-|         +--- androidx.appcompat:appcompat-resources:1.5.0
-|         |    +--- androidx.annotation:annotation:1.2.0 -> 1.7.0 (*)
-|         |    +--- androidx.collection:collection:1.0.0 -> 1.2.0 (*)
-|         |    +--- androidx.core:core:1.6.0 -> 1.12.0 (*)
-|         |    +--- androidx.vectordrawable:vectordrawable:1.1.0
-|         |    |    +--- androidx.annotation:annotation:1.1.0 -> 1.7.0 (*)
-|         |    |    +--- androidx.core:core:1.1.0 -> 1.12.0 (*)
-|         |    |    \--- androidx.collection:collection:1.1.0 -> 1.2.0 (*)
-|         |    +--- androidx.vectordrawable:vectordrawable-animated:1.1.0
-|         |    |    +--- androidx.vectordrawable:vectordrawable:1.1.0 (*)
-|         |    |    +--- androidx.interpolator:interpolator:1.0.0 (*)
-|         |    |    \--- androidx.collection:collection:1.1.0 -> 1.2.0 (*)
-|         |    \--- androidx.appcompat:appcompat:1.5.0 (c)
-|         +--- androidx.collection:collection:1.0.0 -> 1.2.0 (*)
-|         +--- androidx.core:core:1.8.0 -> 1.12.0 (*)
-|         +--- androidx.core:core-ktx:1.8.0 -> 1.12.0 (*)
-|         +--- androidx.cursoradapter:cursoradapter:1.0.0
-|         |    \--- androidx.annotation:annotation:1.0.0 -> 1.7.0 (*)
-|         +--- androidx.drawerlayout:drawerlayout:1.0.0 -> 1.1.1
-|         |    +--- androidx.annotation:annotation:1.1.0 -> 1.7.0 (*)
-|         |    +--- androidx.core:core:1.2.0 -> 1.12.0 (*)
-|         |    \--- androidx.customview:customview:1.1.0 (*)
-|         +--- androidx.emoji2:emoji2:1.2.0 -> 1.4.0
-|         |    +--- androidx.annotation:annotation:1.2.0 -> 1.7.0 (*)
-|         |    +--- androidx.collection:collection:1.1.0 -> 1.2.0 (*)
-|         |    +--- androidx.core:core:1.3.0 -> 1.12.0 (*)
-|         |    +--- androidx.lifecycle:lifecycle-process:2.4.1 -> 2.6.2
-|         |    |    +--- androidx.annotation:annotation:1.2.0 -> 1.7.0 (*)
-|         |    |    +--- androidx.lifecycle:lifecycle-runtime:2.6.2 (*)
-|         |    |    +--- androidx.startup:startup-runtime:1.1.1 (*)
-|         |    |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.10 -> 1.9.22 (*)
-|         |    |    +--- androidx.lifecycle:lifecycle-common:2.6.2 (c)
-|         |    |    +--- androidx.lifecycle:lifecycle-livedata:2.6.2 (c)
-|         |    |    +--- androidx.lifecycle:lifecycle-livedata-core:2.6.2 (c)
-|         |    |    +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.6.2 (c)
-|         |    |    +--- androidx.lifecycle:lifecycle-livedata-ktx:2.6.2 (c)
-|         |    |    +--- androidx.lifecycle:lifecycle-runtime:2.6.2 (c)
-|         |    |    +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.2 (c)
-|         |    |    +--- androidx.lifecycle:lifecycle-viewmodel:2.6.2 (c)
-|         |    |    +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2 (c)
-|         |    |    +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2 (c)
-|         |    |    +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.2 (c)
-|         |    |    +--- androidx.lifecycle:lifecycle-common-java8:2.6.2 (c)
-|         |    |    \--- androidx.lifecycle:lifecycle-service:2.6.2 (c)
-|         |    +--- androidx.startup:startup-runtime:1.0.0 -> 1.1.1 (*)
-|         |    \--- androidx.emoji2:emoji2-views-helper:1.4.0 (c)
-|         +--- androidx.emoji2:emoji2-views-helper:1.2.0 -> 1.4.0
-|         |    +--- androidx.collection:collection:1.1.0 -> 1.2.0 (*)
-|         |    +--- androidx.core:core:1.3.0 -> 1.12.0 (*)
-|         |    +--- androidx.emoji2:emoji2:1.4.0 (*)
-|         |    \--- androidx.emoji2:emoji2:1.4.0 (c)
-|         +--- androidx.fragment:fragment:1.3.6 -> 1.6.2 (*)
-|         +--- androidx.lifecycle:lifecycle-runtime:2.3.1 -> 2.6.2 (*)
-|         +--- androidx.lifecycle:lifecycle-viewmodel:2.3.1 -> 2.6.2 (*)
-|         +--- androidx.resourceinspection:resourceinspection-annotation:1.0.1
-|         |    \--- androidx.annotation:annotation:1.1.0 -> 1.7.0 (*)
-|         +--- androidx.savedstate:savedstate:1.1.0 -> 1.2.1 (*)
-|         +--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 1.9.22 (*)
-|         \--- androidx.appcompat:appcompat-resources:1.5.0 (c)
+|    \--- androidx.appcompat:appcompat:1.2.0 -> 1.6.1
+|         +--- androidx.activity:activity:1.6.0 -> 1.8.0 (*)
+|         +--- androidx.annotation:annotation:1.3.0 -> 1.7.0 (*)
+|         +--- androidx.appcompat:appcompat-resources:1.6.1
+|         |    +--- androidx.annotation:annotation:1.2.0 -> 1.7.0 (*)
+|         |    +--- androidx.collection:collection:1.0.0 -> 1.2.0 (*)
+|         |    +--- androidx.core:core:1.6.0 -> 1.12.0 (*)
+|         |    +--- androidx.vectordrawable:vectordrawable:1.1.0
+|         |    |    +--- androidx.annotation:annotation:1.1.0 -> 1.7.0 (*)
+|         |    |    +--- androidx.core:core:1.1.0 -> 1.12.0 (*)
+|         |    |    \--- androidx.collection:collection:1.1.0 -> 1.2.0 (*)
+|         |    +--- androidx.vectordrawable:vectordrawable-animated:1.1.0
+|         |    |    +--- androidx.vectordrawable:vectordrawable:1.1.0 (*)
+|         |    |    +--- androidx.interpolator:interpolator:1.0.0 (*)
+|         |    |    \--- androidx.collection:collection:1.1.0 -> 1.2.0 (*)
+|         |    \--- androidx.appcompat:appcompat:1.6.1 (c)
+|         +--- androidx.collection:collection:1.0.0 -> 1.2.0 (*)
+|         +--- androidx.core:core:1.9.0 -> 1.12.0 (*)
+|         +--- androidx.core:core-ktx:1.8.0 -> 1.12.0 (*)
+|         +--- androidx.cursoradapter:cursoradapter:1.0.0
+|         |    \--- androidx.annotation:annotation:1.0.0 -> 1.7.0 (*)
+|         +--- androidx.drawerlayout:drawerlayout:1.0.0 -> 1.1.1
+|         |    +--- androidx.annotation:annotation:1.1.0 -> 1.7.0 (*)
+|         |    +--- androidx.core:core:1.2.0 -> 1.12.0 (*)
+|         |    \--- androidx.customview:customview:1.1.0 (*)
+|         +--- androidx.emoji2:emoji2:1.2.0 -> 1.4.0
+|         |    +--- androidx.annotation:annotation:1.2.0 -> 1.7.0 (*)
+|         |    +--- androidx.collection:collection:1.1.0 -> 1.2.0 (*)
+|         |    +--- androidx.core:core:1.3.0 -> 1.12.0 (*)
+|         |    +--- androidx.lifecycle:lifecycle-process:2.4.1 -> 2.6.2
+|         |    |    +--- androidx.annotation:annotation:1.2.0 -> 1.7.0 (*)
+|         |    |    +--- androidx.lifecycle:lifecycle-runtime:2.6.2 (*)
+|         |    |    +--- androidx.startup:startup-runtime:1.1.1 (*)
+|         |    |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.10 -> 1.9.22 (*)
+|         |    |    +--- androidx.lifecycle:lifecycle-common:2.6.2 (c)
+|         |    |    +--- androidx.lifecycle:lifecycle-livedata:2.6.2 (c)
+|         |    |    +--- androidx.lifecycle:lifecycle-livedata-core:2.6.2 (c)
+|         |    |    +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.6.2 (c)
+|         |    |    +--- androidx.lifecycle:lifecycle-livedata-ktx:2.6.2 (c)
+|         |    |    +--- androidx.lifecycle:lifecycle-runtime:2.6.2 (c)
+|         |    |    +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.2 (c)
+|         |    |    +--- androidx.lifecycle:lifecycle-viewmodel:2.6.2 (c)
+|         |    |    +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2 (c)
+|         |    |    +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2 (c)
+|         |    |    +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.2 (c)
+|         |    |    +--- androidx.lifecycle:lifecycle-common-java8:2.6.2 (c)
+|         |    |    \--- androidx.lifecycle:lifecycle-service:2.6.2 (c)
+|         |    +--- androidx.startup:startup-runtime:1.0.0 -> 1.1.1 (*)
+|         |    \--- androidx.emoji2:emoji2-views-helper:1.4.0 (c)
+|         +--- androidx.emoji2:emoji2-views-helper:1.2.0 -> 1.4.0
+|         |    +--- androidx.collection:collection:1.1.0 -> 1.2.0 (*)
+|         |    +--- androidx.core:core:1.3.0 -> 1.12.0 (*)
+|         |    +--- androidx.emoji2:emoji2:1.4.0 (*)
+|         |    \--- androidx.emoji2:emoji2:1.4.0 (c)
+|         +--- androidx.fragment:fragment:1.3.6 -> 1.6.2 (*)
+|         +--- androidx.lifecycle:lifecycle-runtime:2.5.1 -> 2.6.2 (*)
+|         +--- androidx.lifecycle:lifecycle-viewmodel:2.5.1 -> 2.6.2 (*)
+|         +--- androidx.resourceinspection:resourceinspection-annotation:1.0.1
+|         |    \--- androidx.annotation:annotation:1.1.0 -> 1.7.0 (*)
+|         +--- androidx.savedstate:savedstate:1.2.0 -> 1.2.1 (*)
+|         +--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 1.9.22 (*)
+|         \--- androidx.appcompat:appcompat-resources:1.6.1 (c)
-+--- androidx.appcompat:appcompat:1.4.2 -> 1.5.0 (*)
++--- androidx.appcompat:appcompat:1.4.2 -> 1.6.1 (*)
 +--- com.google.android.material:material:1.6.1 -> 1.9.0
-|    \--- androidx.appcompat:appcompat:1.5.0 (*)
+|    \--- androidx.appcompat:appcompat:1.5.0 -> 1.6.1 (*)
 +--- androidx.preference:preference:1.2.0
-|    \--- androidx.appcompat:appcompat:1.1.0 -> 1.5.0 (*)
+|    \--- androidx.appcompat:appcompat:1.1.0 -> 1.6.1 (*)
 +--- org.wordpress:fluxc:trunk-3a4c421cb0a18898c23dc95fef044e991b16868d
-|    \--- androidx.appcompat:appcompat:1.0.2 -> 1.5.0 (*)
+|    \--- androidx.appcompat:appcompat:1.0.2 -> 1.6.1 (*)
-+--- org.wordpress:login:1.9.0
-|    +--- com.google.android.gms:play-services-auth:18.1.0 -> 20.2.0 (*)
-|    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10 -> 1.9.0 (*)
-|    +--- androidx.appcompat:appcompat:1.0.2 -> 1.5.0 (*)
-|    +--- androidx.vectordrawable:vectordrawable-animated:1.1.0 (*)
-|    +--- androidx.media:media:1.2.1
-|    |    +--- androidx.collection:collection:1.1.0 -> 1.2.0 (*)
-|    |    \--- androidx.core:core:1.3.0 -> 1.12.0 (*)
-|    +--- androidx.legacy:legacy-support-v13:1.0.0
-|    |    \--- androidx.legacy:legacy-support-v4:1.0.0
-|    |         +--- androidx.core:core:1.0.0 -> 1.12.0 (*)
-|    |         +--- androidx.media:media:1.0.0 -> 1.2.1 (*)
-|    |         +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
-|    |         +--- androidx.legacy:legacy-support-core-ui:1.0.0
-|    |         |    +--- androidx.annotation:annotation:1.0.0 -> 1.7.0 (*)
-|    |         |    +--- androidx.core:core:1.0.0 -> 1.12.0 (*)
-|    |         |    +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
-|    |         |    +--- androidx.customview:customview:1.0.0 -> 1.1.0 (*)
-|    |         |    +--- androidx.viewpager:viewpager:1.0.0 (*)
-|    |         |    +--- androidx.coordinatorlayout:coordinatorlayout:1.0.0 -> 1.1.0 (*)
-|    |         |    +--- androidx.drawerlayout:drawerlayout:1.0.0 -> 1.1.1 (*)
-|    |         |    +--- androidx.slidingpanelayout:slidingpanelayout:1.0.0 -> 1.2.0 (*)
-|    |         |    +--- androidx.interpolator:interpolator:1.0.0 (*)
-|    |         |    +--- androidx.swiperefreshlayout:swiperefreshlayout:1.0.0 -> 1.1.0 (*)
-|    |         |    +--- androidx.asynclayoutinflater:asynclayoutinflater:1.0.0
-|    |         |    |    +--- androidx.annotation:annotation:1.0.0 -> 1.7.0 (*)
-|    |         |    |    \--- androidx.core:core:1.0.0 -> 1.12.0 (*)
-|    |         |    \--- androidx.cursoradapter:cursoradapter:1.0.0 (*)
-|    |         \--- androidx.fragment:fragment:1.0.0 -> 1.6.2 (*)
-|    +--- androidx.gridlayout:gridlayout:1.0.0
-|    |    +--- androidx.core:core:1.0.0 -> 1.12.0 (*)
-|    |    \--- androidx.legacy:legacy-support-core-ui:1.0.0 (*)
-|    +--- androidx.constraintlayout:constraintlayout:2.0.4 -> 2.1.4 (*)
-|    +--- com.google.android.material:material:1.2.1 -> 1.9.0 (*)
-|    +--- androidx.core:core-ktx:1.3.2 -> 1.12.0 (*)
-|    +--- com.github.bumptech.glide:glide:4.12.0 -> 4.16.0
-|    |    +--- com.github.bumptech.glide:gifdecoder:4.16.0
-|    |    |    \--- androidx.annotation:annotation:1.5.0 -> 1.7.0 (*)
-|    |    +--- com.github.bumptech.glide:disklrucache:4.16.0
-|    |    +--- com.github.bumptech.glide:annotations:4.16.0
-|    |    +--- androidx.fragment:fragment:1.3.6 -> 1.6.2 (*)
-|    |    +--- androidx.vectordrawable:vectordrawable-animated:1.1.0 (*)
-|    |    +--- androidx.exifinterface:exifinterface:1.3.6 (*)
-|    |    \--- androidx.tracing:tracing:1.0.0 (*)
-|    +--- com.google.android.gms:play-services-fido:20.1.0
-|    |    +--- com.google.android.gms:play-services-base:18.0.1 -> 18.1.0 (*)
-|    |    +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.1.0 (*)
-|    |    \--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.0.2 (*)
-|    +--- com.google.dagger:dagger:2.42 -> 2.50 (*)
-|    \--- com.google.dagger:dagger-android-support:2.42 -> 2.50
-|         +--- com.google.dagger:dagger:2.50 (*)
-|         +--- com.google.dagger:dagger-android:2.50
-|         |    +--- com.google.dagger:dagger:2.50 (*)
-|         |    +--- com.google.dagger:dagger-lint-aar:2.50
-|         |    +--- androidx.annotation:annotation:1.2.0 -> 1.7.0 (*)
-|         |    \--- javax.inject:javax.inject:1
-|         +--- com.google.dagger:dagger-lint-aar:2.50
-|         +--- androidx.activity:activity:1.5.1 -> 1.8.0 (*)
-|         +--- androidx.annotation:annotation:1.2.0 -> 1.7.0 (*)
-|         +--- androidx.appcompat:appcompat:1.3.1 -> 1.5.0 (*)
-|         +--- androidx.fragment:fragment:1.5.1 -> 1.6.2 (*)
-|         +--- androidx.lifecycle:lifecycle-common:2.5.1 -> 2.6.2 (*)
-|         +--- androidx.lifecycle:lifecycle-viewmodel:2.5.1 -> 2.6.2 (*)
-|         +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.5.1 -> 2.6.2 (*)
-|         \--- javax.inject:javax.inject:1
++--- org.wordpress:login:trunk-a90b1ce939aba700d822f188d41624385f9c1dce
+|    +--- androidx.appcompat:appcompat:1.6.1 (*)
+|    +--- androidx.vectordrawable:vectordrawable-animated:1.1.0 (*)
+|    +--- androidx.media:media:1.2.1
+|    |    +--- androidx.collection:collection:1.1.0 -> 1.2.0 (*)
+|    |    \--- androidx.core:core:1.3.0 -> 1.12.0 (*)
+|    +--- androidx.legacy:legacy-support-v13:1.0.0
+|    |    \--- androidx.legacy:legacy-support-v4:1.0.0
+|    |         +--- androidx.core:core:1.0.0 -> 1.12.0 (*)
+|    |         +--- androidx.media:media:1.0.0 -> 1.2.1 (*)
+|    |         +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
+|    |         +--- androidx.legacy:legacy-support-core-ui:1.0.0
+|    |         |    +--- androidx.annotation:annotation:1.0.0 -> 1.7.0 (*)
+|    |         |    +--- androidx.core:core:1.0.0 -> 1.12.0 (*)
+|    |         |    +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
+|    |         |    +--- androidx.customview:customview:1.0.0 -> 1.1.0 (*)
+|    |         |    +--- androidx.viewpager:viewpager:1.0.0 (*)
+|    |         |    +--- androidx.coordinatorlayout:coordinatorlayout:1.0.0 -> 1.1.0 (*)
+|    |         |    +--- androidx.drawerlayout:drawerlayout:1.0.0 -> 1.1.1 (*)
+|    |         |    +--- androidx.slidingpanelayout:slidingpanelayout:1.0.0 -> 1.2.0 (*)
+|    |         |    +--- androidx.interpolator:interpolator:1.0.0 (*)
+|    |         |    +--- androidx.swiperefreshlayout:swiperefreshlayout:1.0.0 -> 1.1.0 (*)
+|    |         |    +--- androidx.asynclayoutinflater:asynclayoutinflater:1.0.0
+|    |         |    |    +--- androidx.annotation:annotation:1.0.0 -> 1.7.0 (*)
+|    |         |    |    \--- androidx.core:core:1.0.0 -> 1.12.0 (*)
+|    |         |    \--- androidx.cursoradapter:cursoradapter:1.0.0 (*)
+|    |         \--- androidx.fragment:fragment:1.0.0 -> 1.6.2 (*)
+|    +--- androidx.gridlayout:gridlayout:1.0.0
+|    |    +--- androidx.core:core:1.0.0 -> 1.12.0 (*)
+|    |    \--- androidx.legacy:legacy-support-core-ui:1.0.0 (*)
+|    +--- androidx.constraintlayout:constraintlayout:2.0.4 -> 2.1.4 (*)
+|    +--- com.google.android.material:material:1.2.1 -> 1.9.0 (*)
+|    +--- androidx.core:core-ktx:1.12.0 (*)
+|    +--- com.github.bumptech.glide:glide:4.12.0 -> 4.16.0
+|    |    +--- com.github.bumptech.glide:gifdecoder:4.16.0
+|    |    |    \--- androidx.annotation:annotation:1.5.0 -> 1.7.0 (*)
+|    |    +--- com.github.bumptech.glide:disklrucache:4.16.0
+|    |    +--- com.github.bumptech.glide:annotations:4.16.0
+|    |    +--- androidx.fragment:fragment:1.3.6 -> 1.6.2 (*)
+|    |    +--- androidx.vectordrawable:vectordrawable-animated:1.1.0 (*)
+|    |    +--- androidx.exifinterface:exifinterface:1.3.6 (*)
+|    |    \--- androidx.tracing:tracing:1.0.0 (*)
+|    +--- androidx.credentials:credentials:1.2.0
+|    |    +--- androidx.annotation:annotation:1.5.0 -> 1.7.0 (*)
+|    |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 1.9.22 (*)
+|    |    +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1 -> 1.7.3 (*)
+|    |    \--- androidx.credentials:credentials-play-services-auth:1.2.0 (c)
+|    +--- androidx.credentials:credentials-play-services-auth:1.2.0
+|    |    +--- androidx.credentials:credentials:1.2.0 (*)
+|    |    +--- com.google.android.gms:play-services-auth:20.7.0 (*)
+|    |    +--- com.google.android.gms:play-services-fido:20.1.0 (*)
+|    |    +--- com.google.android.libraries.identity.googleid:googleid:1.1.0
+|    |    |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.0 -> 1.9.22 (*)
+|    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.9.0 (*)
+|    |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 1.9.22 (*)
+|    |    \--- androidx.credentials:credentials:1.2.0 (c)
+|    +--- com.google.dagger:dagger:2.47 -> 2.50 (*)
+|    +--- com.google.dagger:dagger-android-support:2.47 -> 2.50
+|    |    +--- com.google.dagger:dagger:2.50 (*)
+|    |    +--- com.google.dagger:dagger-android:2.50
+|    |    |    +--- com.google.dagger:dagger:2.50 (*)
+|    |    |    +--- com.google.dagger:dagger-lint-aar:2.50
+|    |    |    +--- androidx.annotation:annotation:1.2.0 -> 1.7.0 (*)
+|    |    |    \--- javax.inject:javax.inject:1
+|    |    +--- com.google.dagger:dagger-lint-aar:2.50
+|    |    +--- androidx.activity:activity:1.5.1 -> 1.8.0 (*)
+|    |    +--- androidx.annotation:annotation:1.2.0 -> 1.7.0 (*)
+|    |    +--- androidx.appcompat:appcompat:1.3.1 -> 1.6.1 (*)
+|    |    +--- androidx.fragment:fragment:1.5.1 -> 1.6.2 (*)
+|    |    +--- androidx.lifecycle:lifecycle-common:2.5.1 -> 2.6.2 (*)
+|    |    +--- androidx.lifecycle:lifecycle-viewmodel:2.5.1 -> 2.6.2 (*)
+|    |    +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.5.1 -> 2.6.2 (*)
+|    |    \--- javax.inject:javax.inject:1
+|    +--- com.google.android.gms:play-services-auth:18.1.0 -> 20.7.0 (*)
+|    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.9.0 (*)
 +--- project :libs:cardreader
 |    \--- com.stripe:stripeterminal-localmobile:3.1.1
 |         +--- com.google.android.gms:play-services-safetynet:18.0.1
-|         |    \--- com.google.android.gms:play-services-basement:18.0.0 -> 18.1.0 (*)
+|         |    \--- com.google.android.gms:play-services-basement:18.0.0 -> 18.2.0 (*)
 |         \--- com.google.android.play:integrity:1.1.0
-|              \--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|              \--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 +--- project :libs:iap
-|    \--- androidx.appcompat:appcompat:1.4.2 -> 1.5.0 (*)
+|    \--- androidx.appcompat:appcompat:1.4.2 -> 1.6.1 (*)
 +--- com.github.chrisbanes:PhotoView:2.3.0
-|    \--- androidx.appcompat:appcompat:1.0.0 -> 1.5.0 (*)
+|    \--- androidx.appcompat:appcompat:1.0.0 -> 1.6.1 (*)
 +--- com.automattic:about:0.0.6
 |    \--- com.google.android.material:compose-theme-adapter:1.1.1
-|         \--- androidx.appcompat:appcompat:1.3.0 -> 1.5.0 (*)
+|         \--- androidx.appcompat:appcompat:1.3.0 -> 1.6.1 (*)
 +--- com.google.android.play:app-update-ktx:2.1.0
-|    +--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    +--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 |    \--- com.google.android.play:app-update:2.1.0
-|         \--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|         \--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 +--- com.google.android.play:review-ktx:2.0.1
-|    +--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    +--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 |    \--- com.google.android.play:review:2.0.1
-|         \--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|         \--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 +--- com.google.android.gms:play-services-code-scanner:16.1.0
-|    +--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    +--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 |    \--- com.google.mlkit:barcode-scanning-common:17.0.0
-|         +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.1.0 (*)
+|         +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.2.0 (*)
 |         \--- com.google.mlkit:vision-common:17.0.0 -> 17.3.0
-|              +--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|              +--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 |              \--- com.google.mlkit:common:18.6.0 -> 18.9.0
-|                   \--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|                   \--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 +--- com.google.mlkit:text-recognition:16.0.0
-|    +--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    +--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 |    +--- com.google.android.gms:play-services-mlkit-text-recognition:19.0.0
-|    |    +--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    |    +--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 |    |    \--- com.google.android.gms:play-services-mlkit-text-recognition-common:19.0.0
-|    |         +--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    |         +--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 |    |         \--- com.google.mlkit:vision-interfaces:16.2.0
-|    |              \--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    |              \--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 |    \--- com.google.mlkit:text-recognition-bundled-common:16.0.0
-|         \--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|         \--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 +--- com.google.mlkit:barcode-scanning:17.2.0
-|    +--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    +--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 |    \--- com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.0
-|         \--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|         \--- com.google.android.gms:play-services-basement:18.1.0 -> 18.2.0 (*)
 +--- com.zendesk:support:5.0.8
 |    +--- com.zendesk:guide:1.0.7
 |    |    +--- com.zendesk:messaging:5.2.3
 |    |    |    +--- com.zendesk:common-ui:4.0.3
-|    |    |    |    \--- androidx.appcompat:appcompat:1.0.0 -> 1.5.0 (*)
+|    |    |    |    \--- androidx.appcompat:appcompat:1.0.0 -> 1.6.1 (*)
-|    |    |    \--- androidx.appcompat:appcompat:1.0.0 -> 1.5.0 (*)
+|    |    |    \--- androidx.appcompat:appcompat:1.0.0 -> 1.6.1 (*)
-|    |    \--- androidx.appcompat:appcompat -> 1.5.0 (*)
+|    |    \--- androidx.appcompat:appcompat -> 1.6.1 (*)
-|    \--- androidx.appcompat:appcompat:1.0.0 -> 1.5.0 (*)
+|    \--- androidx.appcompat:appcompat:1.0.0 -> 1.6.1 (*)
 +--- org.wordpress:mediapicker:0.3.0
-|    \--- androidx.appcompat:appcompat:1.4.2 -> 1.5.0 (*)
+|    \--- androidx.appcompat:appcompat:1.4.2 -> 1.6.1 (*)
 +--- io.coil-kt:coil-compose:2.1.0
 |    \--- io.coil-kt:coil-compose-base:2.1.0
 |         \--- io.coil-kt:coil-base:2.1.0
-|              \--- androidx.appcompat:appcompat-resources:1.4.1 -> 1.5.0 (*)
+|              \--- androidx.appcompat:appcompat-resources:1.4.1 -> 1.6.1 (*)
 \--- androidx.camera:camera-view:1.2.3
-     \--- androidx.appcompat:appcompat:1.1.0 -> 1.5.0 (*)
+     \--- androidx.appcompat:appcompat:1.1.0 -> 1.6.1 (*)

Please review and act accordingly

@ThomazFB ThomazFB merged commit 884b28a into trunk Feb 16, 2024
14 checks passed
@ThomazFB ThomazFB deleted the issue/add-credential-manager-support branch February 16, 2024 02:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature: login Related to any part of the log in or sign in flow, or authentication. type: task An internally driven task.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Integrate Credential Manager changes with Woo Android app
4 participants