From c191b6d5489e23b9e21492024f7d3449ac2bd400 Mon Sep 17 00:00:00 2001 From: Edem Ibraimov Date: Wed, 27 Nov 2024 16:22:54 +0200 Subject: [PATCH] LLM-3762: license: add oauth providers to the login API (cherry picked from commit 635b72f4ec14405e7ea52b68c56491e6d63aee7f) GitOrigin-RevId: 2e56e84565b6bbe53229b44d0838d084d755b52a --- .../com/intellij/ui/JBAccountInfoService.java | 24 ++++++++++++++++--- .../auth/DummyJBAccountInfoService.kt | 2 +- .../auth/SettingsSyncDefaultAuthService.kt | 3 +-- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ui/JBAccountInfoService.java b/platform/platform-impl/src/com/intellij/ui/JBAccountInfoService.java index 028794fc53dd..75c6a18d6fa5 100644 --- a/platform/platform-impl/src/com/intellij/ui/JBAccountInfoService.java +++ b/platform/platform-impl/src/com/intellij/ui/JBAccountInfoService.java @@ -100,9 +100,19 @@ public interface JBAccountInfoService { } /** - * Starts the auth flow by opening the browser and waiting for the user to proceed with logging in. + * See startLoginSession(@NotNull LoginMode, @Nullable String, Map<@NotNull String, @NotNull String>) */ - @NotNull LoginSession startLoginSession(@NotNull LoginMode loginMode, @NotNull Map<@NotNull String, @NotNull String> clientMetadata); + default @NotNull LoginSession startLoginSession(@NotNull LoginMode loginMode, @NotNull Map<@NotNull String, @NotNull String> clientMetadata) { + return startLoginSession(loginMode, null, clientMetadata); + } + + /** + * Starts the auth flow based on the provided login mode, optional authProviderId, and client metadata + * by opening the browser and waiting for the user to proceed with logging in. + */ + @NotNull LoginSession startLoginSession(@NotNull LoginMode loginMode, + @Nullable String authProviderId, + @NotNull Map<@NotNull String, @NotNull String> clientMetadata); /** * Returns the list of licenses available in the current user's account matching the specified productCode. @@ -142,7 +152,15 @@ public interface JBAccountInfoService { record JbaServiceConfiguration( @NotNull String accountUrl, @NotNull String signupUrl, - @Nullable String paymentMethodsUrl // TODO nullable during the transition period + @Nullable String paymentMethodsUrl, // TODO nullable during the transition period + @NotNull List<@NotNull JbaOAuthProvider> authProviders + ) { } + + record JbaOAuthProvider( + @NotNull String id, + @NotNull String name, + @NotNull String logoUrl, + @NotNull String logoDarkUrl ) { } enum LoginMode { diff --git a/plugins/settings-sync/src/com/intellij/settingsSync/auth/DummyJBAccountInfoService.kt b/plugins/settings-sync/src/com/intellij/settingsSync/auth/DummyJBAccountInfoService.kt index 8081fd97b83d..7eeee54dc848 100644 --- a/plugins/settings-sync/src/com/intellij/settingsSync/auth/DummyJBAccountInfoService.kt +++ b/plugins/settings-sync/src/com/intellij/settingsSync/auth/DummyJBAccountInfoService.kt @@ -21,7 +21,7 @@ object DummyJBAccountInfoService : JBAccountInfoService { return _idToken } - override fun startLoginSession(loginMode: JBAccountInfoService.LoginMode, clientMetadata: Map): JBAccountInfoService.LoginSession { + override fun startLoginSession(loginMode: JBAccountInfoService.LoginMode, authProviderId: String?, clientMetadata: Map): JBAccountInfoService.LoginSession { TODO("Not yet implemented") } diff --git a/plugins/settings-sync/src/com/intellij/settingsSync/auth/SettingsSyncDefaultAuthService.kt b/plugins/settings-sync/src/com/intellij/settingsSync/auth/SettingsSyncDefaultAuthService.kt index c9320dd51a35..a8be7f92d9ad 100644 --- a/plugins/settings-sync/src/com/intellij/settingsSync/auth/SettingsSyncDefaultAuthService.kt +++ b/plugins/settings-sync/src/com/intellij/settingsSync/auth/SettingsSyncDefaultAuthService.kt @@ -1,7 +1,6 @@ package com.intellij.settingsSync.auth import com.intellij.openapi.application.ex.ApplicationManagerEx -import com.intellij.openapi.diagnostic.Logger.getInstance import com.intellij.openapi.diagnostic.logger import com.intellij.settingsSync.SettingsSyncEvents import com.intellij.settingsSync.SettingsSyncPromotion @@ -51,7 +50,7 @@ internal class SettingsSyncDefaultAuthService : SettingsSyncAuthService { if (accountInfoService != null) { try { val loginSession: JBAccountInfoService.LoginSession? = accountInfoService.startLoginSession( - JBAccountInfoService.LoginMode.AUTO, loginMetadata) + JBAccountInfoService.LoginMode.AUTO, null, loginMetadata) loginSession!!.onCompleted().thenAccept(Consumer { SettingsSyncEvents.getInstance().fireLoginStateChanged()