Skip to content

Commit 3755880

Browse files
committed
Remove signout popup, stop credential deletion & remove scopes from config instead
1 parent 80abea5 commit 3755880

File tree

3 files changed

+29
-13
lines changed

3 files changed

+29
-13
lines changed

plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/credentials/ConfigFilesFacade.kt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ interface ConfigFilesFacade {
4141
fun updateSectionInConfig(sectionName: String, profile: Profile)
4242

4343
fun deleteSsoConnectionFromConfig(sessionName: String)
44+
fun deleteSsoProfileScopesFromConfig(sessionName: String)
4445
}
4546

4647
class DefaultConfigFilesFacade(
@@ -197,6 +198,31 @@ class DefaultConfigFilesFacade(
197198
}
198199
}
199200

201+
override fun deleteSsoProfileScopesFromConfig(sessionName: String) {
202+
val filePath = configPath
203+
val lines = filePath.inputStreamIfExists()?.reader()?.readLines().orEmpty().toMutableList()
204+
val ssoHeaderLine = lines.indexOfFirst { it.startsWith("[${SsoSessionConstants.SSO_SESSION_SECTION_NAME} $sessionName]") }
205+
if (ssoHeaderLine == -1) return
206+
val nextHeaderLine = lines.subList(ssoHeaderLine + 1, lines.size).indexOfFirst { it.startsWith("[") }
207+
val endIndex = if (nextHeaderLine == -1) lines.size else ssoHeaderLine + nextHeaderLine + 1
208+
209+
// Find and remove the sso_registration_scopes line
210+
for (i in ssoHeaderLine until endIndex) {
211+
if (lines[i].trim().startsWith("sso_registration_scopes=")) {
212+
lines.removeAt(i)
213+
break
214+
}
215+
}
216+
217+
filePath.writeText(lines.joinToString("\n"))
218+
219+
val applicationManager = ApplicationManager.getApplication()
220+
if (applicationManager != null && !applicationManager.isUnitTestMode) {
221+
FileDocumentManager.getInstance().saveAllDocuments()
222+
ProfileWatcher.getInstance().forceRefresh()
223+
}
224+
}
225+
200226
private fun getCorrespondingSsoSessionProfilePosition(updatedArray: List<String>, sessionName: String): List<String> {
201227
var content = updatedArray
202228
val finalContent = mutableListOf<String>()

plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/credentials/ToolkitAuthManager.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import software.aws.toolkits.core.utils.info
2020
import software.aws.toolkits.core.utils.warn
2121
import software.aws.toolkits.jetbrains.core.credentials.pinning.FeatureWithPinnedConnection
2222
import software.aws.toolkits.jetbrains.core.credentials.profiles.ProfileCredentialsIdentifierSso
23+
import software.aws.toolkits.jetbrains.core.credentials.profiles.ProfileWatcher
2324
import software.aws.toolkits.jetbrains.core.credentials.profiles.SsoSessionConstants.SSO_SESSION_SECTION_NAME
2425
import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenAuthState
2526
import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenProvider
@@ -204,6 +205,7 @@ fun loginSso(
204205
fun logoutFromSsoConnection(project: Project?, connection: AwsBearerTokenConnection, callback: () -> Unit = {}) {
205206
try {
206207
ToolkitAuthManager.getInstance().deleteConnection(connection.id)
208+
ProfileWatcher.getInstance().forceRefresh()
207209
if (connection is ProfileSsoManagedBearerSsoConnection) {
208210
deleteSsoConnection(connection)
209211
}
@@ -338,7 +340,7 @@ fun deleteSsoConnection(connection: ProfileSsoManagedBearerSsoConnection) =
338340
fun deleteSsoConnection(connection: CredentialIdentifier) =
339341
deleteSsoConnection(getSsoSessionProfileNameFromCredentials(connection))
340342

341-
fun deleteSsoConnection(sessionName: String) = DefaultConfigFilesFacade().deleteSsoConnectionFromConfig(sessionName)
343+
fun deleteSsoConnection(sessionName: String) = DefaultConfigFilesFacade().deleteSsoProfileScopesFromConfig(sessionName)
342344

343345
private fun getSsoSessionProfileNameFromCredentials(connection: CredentialIdentifier): String {
344346
connection as ProfileCredentialsIdentifierSso

plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/credentials/actions/SsoLogoutAction.kt

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,15 @@ package software.aws.toolkits.jetbrains.core.credentials.actions
66
import com.intellij.openapi.actionSystem.AnActionEvent
77
import com.intellij.openapi.application.ApplicationManager
88
import com.intellij.openapi.project.DumbAwareAction
9-
import com.intellij.openapi.ui.MessageDialogBuilder
109
import software.aws.toolkits.jetbrains.core.credentials.AwsBearerTokenConnection
11-
import software.aws.toolkits.jetbrains.core.credentials.ProfileSsoManagedBearerSsoConnection
1210
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManagerListener
13-
import software.aws.toolkits.jetbrains.core.credentials.deleteSsoConnection
1411
import software.aws.toolkits.jetbrains.core.credentials.logoutFromSsoConnection
1512
import software.aws.toolkits.resources.AwsCoreBundle
1613
import software.aws.toolkits.telemetry.UiTelemetry
1714

1815
class SsoLogoutAction(private val value: AwsBearerTokenConnection) : DumbAwareAction(AwsCoreBundle.message("credentials.individual_identity.signout")) {
1916
override fun actionPerformed(e: AnActionEvent) {
2017
UiTelemetry.click(e.project, "signOut")
21-
if (value is ProfileSsoManagedBearerSsoConnection) {
22-
val confirmDeletion = MessageDialogBuilder.okCancel(
23-
AwsCoreBundle.message("gettingstarted.auth.idc.sign.out.confirmation.title"),
24-
AwsCoreBundle.message("gettingstarted.auth.idc.sign.out.confirmation")
25-
).yesText(AwsCoreBundle.message("general.confirm")).ask(e.project)
26-
if (confirmDeletion) {
27-
deleteSsoConnection(value)
28-
}
29-
}
3018
logoutFromSsoConnection(e.project, value)
3119
ApplicationManager.getApplication().messageBus.syncPublisher(
3220
ToolkitConnectionManagerListener.TOPIC

0 commit comments

Comments
 (0)