Skip to content

Commit

Permalink
add reauth metrics (#4591)
Browse files Browse the repository at this point in the history
  • Loading branch information
wularr committed Jun 20, 2024
1 parent 9cfe9f4 commit ecb1e65
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenPr
import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.InteractiveBearerTokenProvider
import software.aws.toolkits.jetbrains.utils.runUnderProgressIfNeeded
import software.aws.toolkits.resources.message
import software.aws.toolkits.telemetry.AuthTelemetry
import software.aws.toolkits.telemetry.AwsTelemetry
import software.aws.toolkits.telemetry.CredentialSourceId
import software.aws.toolkits.telemetry.CredentialType
import software.aws.toolkits.telemetry.Result

sealed interface ToolkitConnection {
val id: String
Expand Down Expand Up @@ -219,13 +224,55 @@ fun reauthConnectionIfNeeded(
if (tokenProvider is InteractiveBearerTokenProvider) {
onPendingToken(tokenProvider)
}
return reauthProviderIfNeeded(project, tokenProvider)
return reauthProviderIfNeeded(project, tokenProvider, connection)
}

fun reauthProviderIfNeeded(project: Project?, tokenProvider: BearerTokenProvider): BearerTokenProvider {
private fun reauthProviderIfNeeded(
project: Project?,
tokenProvider: BearerTokenProvider,
connection: ToolkitConnection
): BearerTokenProvider {
maybeReauthProviderIfNeeded(project, tokenProvider) {
runUnderProgressIfNeeded(project, message("credentials.pending.title"), true) {
tokenProvider.reauthenticate()
try {
tokenProvider.reauthenticate()

if (connection is AwsBearerTokenConnection) {
AwsTelemetry.loginWithBrowser(
project = null,
result = Result.Succeeded,
isReAuth = true,
credentialType = CredentialType.BearerToken,
credentialStartUrl = connection.startUrl,
credentialSourceId = CredentialSourceId.AwsId
)
}
AuthTelemetry.addConnection(
project = null,
result = Result.Succeeded,
isReAuth = true,
credentialSourceId = CredentialSourceId.AwsId
)
} catch (e: Exception) {
if (connection is AwsBearerTokenConnection) {
AwsTelemetry.loginWithBrowser(
project = null,
result = Result.Failed,
isReAuth = true,
reason = e.message,
credentialType = CredentialType.BearerToken,
credentialStartUrl = connection.startUrl,
credentialSourceId = CredentialSourceId.AwsId
)
}
AuthTelemetry.addConnection(
project = null,
result = Result.Succeeded,
isReAuth = true,
credentialSourceId = CredentialSourceId.AwsId,
reason = e.message
)
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -207,13 +207,6 @@ abstract class LoginBrowser(
if (connection is AwsBearerTokenConnection) {
loginWithBackgroundContext {
reauthConnectionIfNeeded(project, connection, onPendingToken)
AwsTelemetry.loginWithBrowser(
project = null,
isReAuth = true,
result = Result.Succeeded,
credentialStartUrl = connection.startUrl,
credentialType = CredentialType.BearerToken
)
}
}
}
Expand Down

0 comments on commit ecb1e65

Please sign in to comment.