@@ -7,10 +7,12 @@ import com.intellij.openapi.Disposable
77import com.intellij.openapi.project.Project
88import org.eclipse.lsp4j.jsonrpc.messages.ResponseMessage
99import software.aws.toolkits.core.TokenConnectionSettings
10+ import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnection
1011import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
1112import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection
1213import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenProvider
1314import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenProviderListener
15+ import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManagerListener
1416import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService
1517import software.aws.toolkits.jetbrains.services.amazonq.lsp.encryption.JwtEncryptionManager
1618import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.BearerCredentials
@@ -23,25 +25,50 @@ class DefaultAuthCredentialsService(
2325 private val encryptionManager : JwtEncryptionManager ,
2426 serverInstance : Disposable ,
2527) : AuthCredentialsService,
26- BearerTokenProviderListener {
27- init {
28+ BearerTokenProviderListener ,
29+ ToolkitConnectionManagerListener {
30+
31+ init {
2832 project.messageBus.connect(serverInstance).subscribe(BearerTokenProviderListener .TOPIC , this )
33+ project.messageBus.connect(serverInstance).subscribe(ToolkitConnectionManagerListener .TOPIC , this )
34+
35+ val connection = ToolkitConnectionManager .getInstance(project)
36+ .activeConnectionForFeature(QConnection .getInstance())
37+
38+ val provider = (connection?.getConnectionSettings() as ? TokenConnectionSettings )
39+ ?.tokenProvider
40+ ?.delegate as ? BearerTokenProvider
2941
30- onChange(" init" , null )
42+ provider?.currentToken()?.accessToken?.let { token ->
43+ updateTokenCredentials(token, true )
44+ }
3145 }
3246
3347 override fun onChange (providerId : String , newScopes : List <String >? ) {
34- val connection = ToolkitConnectionManager .getInstance(project)
35- .activeConnectionForFeature(QConnection .getInstance())
48+ val connection = ToolkitConnectionManager .getInstance(project).activeConnectionForFeature(QConnection .getInstance())
3649 ? : return
37-
3850 val provider = (connection.getConnectionSettings() as ? TokenConnectionSettings )
3951 ?.tokenProvider
4052 ?.delegate as ? BearerTokenProvider
4153 ? : return
4254
4355 provider.currentToken()?.accessToken?.let { token ->
44- // assume encryption is always on
56+ updateTokenCredentials(token, true )
57+ }
58+ }
59+
60+ override fun activeConnectionChanged (newConnection : ToolkitConnection ? ) {
61+ val qConnection = ToolkitConnectionManager .getInstance(project)
62+ .activeConnectionForFeature(QConnection .getInstance())
63+ ? : return
64+ if (newConnection?.id != qConnection.id) return
65+ // Handle new connection
66+ val provider = (newConnection.getConnectionSettings() as ? TokenConnectionSettings )
67+ ?.tokenProvider
68+ ?.delegate as ? BearerTokenProvider
69+ ? : return
70+
71+ provider.currentToken()?.accessToken?.let { token ->
4572 updateTokenCredentials(token, true )
4673 }
4774 }
@@ -82,4 +109,5 @@ class DefaultAuthCredentialsService(
82109 encrypted = false
83110 )
84111 }
112+
85113}
0 commit comments