Skip to content

Commit 36341b8

Browse files
committed
emit on login
1 parent 38fe91e commit 36341b8

File tree

1 file changed

+35
-7
lines changed

1 file changed

+35
-7
lines changed

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/auth/DefaultAuthCredentialsService.kt

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ import com.intellij.openapi.Disposable
77
import com.intellij.openapi.project.Project
88
import org.eclipse.lsp4j.jsonrpc.messages.ResponseMessage
99
import software.aws.toolkits.core.TokenConnectionSettings
10+
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnection
1011
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
1112
import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection
1213
import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenProvider
1314
import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenProviderListener
15+
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManagerListener
1416
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService
1517
import software.aws.toolkits.jetbrains.services.amazonq.lsp.encryption.JwtEncryptionManager
1618
import 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

Comments
 (0)