Skip to content

Commit 744a2d3

Browse files
committed
Change the way explorer connection scope is checked
1 parent d05315f commit 744a2d3

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package software.aws.toolkits.jetbrains.core.gettingstarted.editor
66
import com.intellij.openapi.project.Project
77
import com.intellij.ui.dsl.builder.Panel
88
import software.aws.toolkits.core.credentials.CredentialIdentifier
9+
import software.aws.toolkits.core.credentials.CredentialType
910
import software.aws.toolkits.jetbrains.core.credentials.AwsBearerTokenConnection
1011
import software.aws.toolkits.jetbrains.core.credentials.AwsConnectionManager
1112
import software.aws.toolkits.jetbrains.core.credentials.ConnectionState
@@ -115,6 +116,20 @@ fun checkIamConnectionValidity(project: Project): ActiveConnection {
115116
}
116117
}
117118

119+
fun checkIamProfileByCredentialType(project: Project): ActiveConnection {
120+
val currConn = AwsConnectionManager.getInstance(project).selectedCredentialIdentifier ?: return ActiveConnection.NotConnected
121+
val invalidConnection = AwsConnectionManager.getInstance(project).connectionState.let { it.isTerminal && it !is ConnectionState.ValidConnection }
122+
val connectionType = when (currConn.credentialType) {
123+
CredentialType.SsoProfile -> ActiveConnectionType.IAM_IDC
124+
else -> ActiveConnectionType.IAM
125+
}
126+
return if (invalidConnection) {
127+
ActiveConnection.ExpiredIam(connectionType = connectionType, activeConnectionIam = currConn)
128+
} else {
129+
ActiveConnection.ValidIam(connectionType = connectionType, activeConnectionIam = currConn)
130+
}
131+
}
132+
118133
/**
119134
* Finds the first valid [ActiveConnection] and returns it.
120135
*
@@ -146,6 +161,7 @@ fun checkConnectionValidity(project: Project): ActiveConnection {
146161
return result
147162
}
148163

164+
@Deprecated("Does not work for current config file setup. Old versions still utilize this logic.")
149165
fun isCredentialSso(providerId: String): ActiveConnectionType {
150166
val profileName = providerId.split("-").first()
151167
val ssoSessionIds = CredentialManager.getInstance().getSsoSessionIdentifiers().map {

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import software.aws.toolkits.core.utils.tryOrNull
1010
import software.aws.toolkits.jetbrains.core.credentials.CredentialManager
1111
import software.aws.toolkits.jetbrains.core.credentials.ToolkitAuthManager
1212
import software.aws.toolkits.jetbrains.core.credentials.profiles.ProfileCredentialsIdentifierSso
13+
import software.aws.toolkits.jetbrains.core.credentials.sono.IDENTITY_CENTER_ROLE_ACCESS_SCOPE
1314
import software.aws.toolkits.jetbrains.settings.AwsSettings
1415
import software.aws.toolkits.telemetry.AuthStatus
1516
import software.aws.toolkits.telemetry.StartUpState
@@ -83,8 +84,10 @@ fun getAuthScopesForTelemetry(project: Project?): Set<String> {
8384
}
8485
}
8586

86-
val explorerConnection = checkIamConnectionValidity(project)
87-
addScopes(explorerConnection)
87+
val explorerConnection = checkIamProfileByCredentialType(project)
88+
if (explorerConnection !is ActiveConnection.NotConnected && explorerConnection.connectionType == ActiveConnectionType.IAM_IDC) {
89+
scopes.add(IDENTITY_CENTER_ROLE_ACCESS_SCOPE)
90+
}
8891

8992
val codeCatalystConnection = checkBearerConnectionValidity(project, BearerTokenFeatureSet.CODECATALYST)
9093
addScopes(codeCatalystConnection)

0 commit comments

Comments
 (0)