mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[git/github] Do not suggest accounts which failed to authenticate to git remote on per-project basis
Otherwise working with two projects on different remotes is cumbersome without setting default account for each project
This commit is contained in:
@@ -252,7 +252,7 @@ class GitHttpGuiAuthenticator implements GitHttpAuthenticator {
|
||||
|
||||
@Override
|
||||
public void onAuthFailure(@NotNull String url) {
|
||||
if (myData != null) myDelegate.forgetPassword(url, myData);
|
||||
if (myData != null) myDelegate.forgetPassword(myProject, url, myData);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ public interface GitHttpAuthDataProvider {
|
||||
return null;
|
||||
}
|
||||
|
||||
default void forgetPassword(@NotNull String url, @NotNull AuthData authData) {
|
||||
default void forgetPassword(@NotNull Project project, @NotNull String url, @NotNull AuthData authData) {
|
||||
//noinspection deprecation
|
||||
forgetPassword(url);
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
<applicationService serviceImplementation="org.jetbrains.plugins.github.authentication.accounts.GithubAccountInformationProvider"/>
|
||||
<applicationService serviceImplementation="org.jetbrains.plugins.github.util.GithubGitHelper"/>
|
||||
<applicationService serviceImplementation="org.jetbrains.plugins.github.util.GithubAccountsMigrationHelper"/>
|
||||
<applicationService serviceImplementation="org.jetbrains.plugins.github.extensions.GithubAccountGitAuthenticationFailureManager"/>
|
||||
<projectService serviceImplementation="org.jetbrains.plugins.github.extensions.GithubAccountGitAuthenticationFailureManager"/>
|
||||
<projectService serviceInterface="org.jetbrains.plugins.github.util.GithubProjectSettings"
|
||||
serviceImplementation="org.jetbrains.plugins.github.util.GithubProjectSettings"/>
|
||||
<projectService serviceImplementation="org.jetbrains.plugins.github.authentication.accounts.GithubProjectDefaultAccountHolder"/>
|
||||
|
||||
+5
-4
@@ -2,6 +2,7 @@
|
||||
|
||||
package org.jetbrains.plugins.github.extensions
|
||||
|
||||
import com.intellij.openapi.components.service
|
||||
import com.intellij.openapi.diagnostic.logger
|
||||
import com.intellij.openapi.progress.DumbProgressIndicator
|
||||
import com.intellij.openapi.project.Project
|
||||
@@ -17,8 +18,7 @@ import java.io.IOException
|
||||
class GithubHttpAuthDataProvider(private val authenticationManager: GithubAuthenticationManager,
|
||||
private val requestExecutorFactory: GithubApiRequestExecutor.Factory,
|
||||
private val requestExecutorManager: GithubApiRequestExecutorManager,
|
||||
private val accountInformationProvider: GithubAccountInformationProvider,
|
||||
private val authenticationFailureManager: GithubAccountGitAuthenticationFailureManager) : GitHttpAuthDataProvider {
|
||||
private val accountInformationProvider: GithubAccountInformationProvider) : GitHttpAuthDataProvider {
|
||||
private val LOG = logger<GithubHttpAuthDataProvider>()
|
||||
|
||||
override fun getAuthData(project: Project, url: String): GithubAccountAuthData? {
|
||||
@@ -43,13 +43,14 @@ class GithubHttpAuthDataProvider(private val authenticationManager: GithubAuthen
|
||||
}
|
||||
}
|
||||
|
||||
override fun forgetPassword(url: String, authData: AuthData) {
|
||||
override fun forgetPassword(project: Project, url: String, authData: AuthData) {
|
||||
if (authData is GithubAccountAuthData) {
|
||||
authenticationFailureManager.ignoreAccount(url, authData.account)
|
||||
project.service<GithubAccountGitAuthenticationFailureManager>().ignoreAccount(url, authData.account)
|
||||
}
|
||||
}
|
||||
|
||||
fun getSuitableAccounts(project: Project, url: String, login: String?): Set<GithubAccount> {
|
||||
val authenticationFailureManager = project.service<GithubAccountGitAuthenticationFailureManager>()
|
||||
var potentialAccounts = authenticationManager.getAccounts()
|
||||
.filter { it.server.matches(url) }
|
||||
.filter { !authenticationFailureManager.isAccountIgnored(url, it) }
|
||||
|
||||
Reference in New Issue
Block a user