in plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/gettingstarted/GettingStartedAuthUtils.kt [34:119]
fun requestCredentialsForCodeWhisperer(
project: Project,
popupBuilderIdTab: Boolean = true,
initialConnectionCount: Long = getConnectionCount(),
initialAuthConnections: String = getEnabledConnections(
project
),
isFirstInstance: Boolean = false,
connectionInitiatedFromExplorer: Boolean = false,
isReauth: Boolean = false,
): Boolean {
val authenticationDialog = SetupAuthenticationDialog(
project,
state = SetupAuthenticationDialogState().also {
if (popupBuilderIdTab) {
it.selectedTab.set(SetupAuthenticationTabs.BUILDER_ID)
}
},
tabSettings = mapOf(
SetupAuthenticationTabs.IDENTITY_CENTER to AuthenticationTabSettings(
disabled = false,
notice = SetupAuthenticationNotice(
SetupAuthenticationNotice.NoticeType.WARNING,
AwsCoreBundle.message("gettingstarted.setup.codewhisperer.use_builder_id"),
CODEWHISPERER_AUTH_LEARN_MORE_LINK
)
),
SetupAuthenticationTabs.BUILDER_ID to AuthenticationTabSettings(
disabled = false,
notice = SetupAuthenticationNotice(
SetupAuthenticationNotice.NoticeType.WARNING,
AwsCoreBundle.message("gettingstarted.setup.codewhisperer.use_identity_center"),
CODEWHISPERER_AUTH_LEARN_MORE_LINK
)
),
SetupAuthenticationTabs.IAM_LONG_LIVED to AuthenticationTabSettings(
disabled = true,
notice = SetupAuthenticationNotice(
SetupAuthenticationNotice.NoticeType.ERROR,
AwsCoreBundle.message("gettingstarted.setup.auth.no_iam"),
CODEWHISPERER_AUTH_LEARN_MORE_LINK
)
)
),
scopes = Q_SCOPES,
promptForIdcPermissionSet = false,
sourceOfEntry = SourceOfEntry.CODEWHISPERER,
featureId = FeatureId.Codewhisperer,
isFirstInstance = isFirstInstance,
connectionInitiatedFromExplorer = connectionInitiatedFromExplorer
)
val isAuthenticationSuccessful = authenticationDialog.showAndGet()
if (isAuthenticationSuccessful) {
Telemetry.auth.addConnection.use {
it.source(getSourceOfEntry(SourceOfEntry.CODEWHISPERER, isFirstInstance, connectionInitiatedFromExplorer))
.featureId(FeatureId.Codewhisperer)
.credentialSourceId(authenticationDialog.authType)
.isAggregated(true)
.attempts(authenticationDialog.attempts + 1)
.result(MetricResult.Succeeded)
.isReAuth(isReauth)
}
AuthTelemetry.addedConnections(
project,
source = getSourceOfEntry(SourceOfEntry.CODEWHISPERER, isFirstInstance, connectionInitiatedFromExplorer),
authConnectionsCount = initialConnectionCount,
newAuthConnectionsCount = getConnectionCount() - initialConnectionCount,
enabledAuthConnections = initialAuthConnections,
newEnabledAuthConnections = getEnabledConnections(project),
attempts = authenticationDialog.attempts + 1,
result = Result.Succeeded
)
} else {
Telemetry.auth.addConnection.use {
it.source(getSourceOfEntry(SourceOfEntry.CODEWHISPERER, isFirstInstance, connectionInitiatedFromExplorer))
.featureId(FeatureId.Codewhisperer)
.credentialSourceId(authenticationDialog.authType)
.isAggregated(false)
.attempts(authenticationDialog.attempts + 1)
.result(MetricResult.Cancelled)
.isReAuth(isReauth)
}
}
return isAuthenticationSuccessful
}