@@ -25,6 +25,11 @@ import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenPr
25
25
import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.InteractiveBearerTokenProvider
26
26
import software.aws.toolkits.jetbrains.utils.runUnderProgressIfNeeded
27
27
import software.aws.toolkits.resources.message
28
+ import software.aws.toolkits.telemetry.AuthTelemetry
29
+ import software.aws.toolkits.telemetry.AwsTelemetry
30
+ import software.aws.toolkits.telemetry.CredentialSourceId
31
+ import software.aws.toolkits.telemetry.CredentialType
32
+ import software.aws.toolkits.telemetry.Result
28
33
29
34
sealed interface ToolkitConnection {
30
35
val id: String
@@ -219,13 +224,55 @@ fun reauthConnectionIfNeeded(
219
224
if (tokenProvider is InteractiveBearerTokenProvider ) {
220
225
onPendingToken(tokenProvider)
221
226
}
222
- return reauthProviderIfNeeded(project, tokenProvider)
227
+ return reauthProviderIfNeeded(project, tokenProvider, connection )
223
228
}
224
229
225
- fun reauthProviderIfNeeded (project : Project ? , tokenProvider : BearerTokenProvider ): BearerTokenProvider {
230
+ private fun reauthProviderIfNeeded (
231
+ project : Project ? ,
232
+ tokenProvider : BearerTokenProvider ,
233
+ connection : ToolkitConnection
234
+ ): BearerTokenProvider {
226
235
maybeReauthProviderIfNeeded(project, tokenProvider) {
227
236
runUnderProgressIfNeeded(project, message(" credentials.pending.title" ), true ) {
228
- tokenProvider.reauthenticate()
237
+ try {
238
+ tokenProvider.reauthenticate()
239
+
240
+ if (connection is AwsBearerTokenConnection ) {
241
+ AwsTelemetry .loginWithBrowser(
242
+ project = null ,
243
+ result = Result .Succeeded ,
244
+ isReAuth = true ,
245
+ credentialType = CredentialType .BearerToken ,
246
+ credentialStartUrl = connection.startUrl,
247
+ credentialSourceId = CredentialSourceId .AwsId
248
+ )
249
+ }
250
+ AuthTelemetry .addConnection(
251
+ project = null ,
252
+ result = Result .Succeeded ,
253
+ isReAuth = true ,
254
+ credentialSourceId = CredentialSourceId .AwsId
255
+ )
256
+ } catch (e: Exception ) {
257
+ if (connection is AwsBearerTokenConnection ) {
258
+ AwsTelemetry .loginWithBrowser(
259
+ project = null ,
260
+ result = Result .Failed ,
261
+ isReAuth = true ,
262
+ reason = e.message,
263
+ credentialType = CredentialType .BearerToken ,
264
+ credentialStartUrl = connection.startUrl,
265
+ credentialSourceId = CredentialSourceId .AwsId
266
+ )
267
+ }
268
+ AuthTelemetry .addConnection(
269
+ project = null ,
270
+ result = Result .Succeeded ,
271
+ isReAuth = true ,
272
+ credentialSourceId = CredentialSourceId .AwsId ,
273
+ reason = e.message
274
+ )
275
+ }
229
276
}
230
277
}
231
278
0 commit comments