Skip to content

Commit 2d053c5

Browse files
committed
Add function to grab scopes from each activeConnection used that is connected/expired.
1 parent df30b58 commit 2d053c5

File tree

2 files changed

+33
-10
lines changed

2 files changed

+33
-10
lines changed

plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/gettingstarted/GettingStartedAuthUtils.kt

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,17 @@ import com.intellij.openapi.project.Project
77
import software.aws.toolkits.jetbrains.services.telemetry.TelemetryService
88
import software.amazon.awssdk.services.toolkittelemetry.model.Unit
99
import software.aws.toolkits.core.utils.tryOrNull
10-
import software.aws.toolkits.jetbrains.core.credentials.AwsConnectionManager
1110
import software.aws.toolkits.jetbrains.core.credentials.LegacyManagedBearerSsoConnection
1211
import software.aws.toolkits.jetbrains.core.credentials.ManagedBearerSsoConnection
1312
import software.aws.toolkits.jetbrains.core.credentials.ProfileSsoManagedBearerSsoConnection
14-
import software.aws.toolkits.jetbrains.core.credentials.ToolkitAuthManager
1513
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
1614
import software.aws.toolkits.jetbrains.core.credentials.loginSso
1715
import software.aws.toolkits.jetbrains.core.credentials.pinning.CodeWhispererConnection
1816
import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection
1917
import software.aws.toolkits.jetbrains.core.credentials.reauthConnectionIfNeeded
2018
import software.aws.toolkits.jetbrains.core.credentials.sono.Q_SCOPES
2119
import software.aws.toolkits.jetbrains.core.gettingstarted.editor.SourceOfEntry
20+
import software.aws.toolkits.jetbrains.core.gettingstarted.editor.getAuthScopes
2221
import software.aws.toolkits.jetbrains.core.gettingstarted.editor.getAuthStatus
2322
import software.aws.toolkits.jetbrains.core.gettingstarted.editor.getConnectionCount
2423
import software.aws.toolkits.jetbrains.core.gettingstarted.editor.getEnabledConnections
@@ -234,11 +233,6 @@ fun reauthenticateWithQ(project: Project) {
234233
}
235234

236235
fun emitUserState(project: Project) {
237-
val explorerConnection = ToolkitConnectionManager.getInstance(project).activeConnection()
238-
val scopes = when (explorerConnection) {
239-
is ManagedBearerSsoConnection -> explorerConnection.scopes
240-
else -> emptyList()
241-
}
242236

243237
TelemetryService.getInstance().record(project) {
244238
datum("auth_userState") {
@@ -249,9 +243,7 @@ fun emitUserState(project: Project) {
249243
metadata("source", getStartupState().toString())
250244
metadata("authStatus", getAuthStatus(project).toString())
251245
metadata("authEnabledConnections", getEnabledConnections(project))
252-
if (getAuthStatus(project).toString() != "notConnected") {
253-
metadata("authScopes", scopes.joinToString(","))
254-
}
246+
metadata("authScopes", getAuthScopes(project))
255247
}
256248
}
257249
}

plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedTelemetryUtils.kt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,37 @@ fun getEnabledConnectionsForTelemetry(project: Project?): Set<AuthFormId> {
7070
fun getEnabledConnections(project: Project?): String =
7171
getEnabledConnectionsForTelemetry(project).joinToString(",")
7272

73+
fun getAuthScopesForTelemetry(project: Project?): Set<String> {
74+
project ?: return emptySet()
75+
val scopes = mutableSetOf<String>()
76+
77+
fun addScopes(connection: ActiveConnection) {
78+
if (connection !is ActiveConnection.NotConnected) {
79+
val connectionScopes = connection.activeConnectionBearer?.scopes
80+
if (connectionScopes != null) {
81+
scopes.addAll(connectionScopes)
82+
}
83+
}
84+
}
85+
86+
val explorerConnection = checkIamConnectionValidity(project)
87+
addScopes(explorerConnection)
88+
89+
val codeCatalystConnection = checkBearerConnectionValidity(project, BearerTokenFeatureSet.CODECATALYST)
90+
addScopes(codeCatalystConnection)
91+
92+
val codeWhispererConnection = checkBearerConnectionValidity(project, BearerTokenFeatureSet.CODEWHISPERER)
93+
addScopes(codeWhispererConnection)
94+
95+
val qConnection = checkBearerConnectionValidity(project, BearerTokenFeatureSet.Q)
96+
addScopes(qConnection)
97+
98+
return scopes
99+
}
100+
101+
fun getAuthScopes(project: Project?): String =
102+
getAuthScopesForTelemetry(project).joinToString(",")
103+
73104
fun getStartupState(): StartUpState {
74105
val hasStartedToolkitBefore = tryOrNull {
75106
getPersistentStateComponentStorageLocation(AwsSettings::class.java)?.exists()

0 commit comments

Comments
 (0)