Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit a2abebd

Browse files
authored
Merge pull request #691 from github-for-unity/fixes/save-keychain-on-2fa-success
Don't save the keychain before completing 2FA
2 parents 6f4d529 + 944eb70 commit a2abebd

File tree

3 files changed

+5
-51
lines changed

3 files changed

+5
-51
lines changed

src/GitHub.Api/Application/ApiClient.cs

Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -131,55 +131,6 @@ public async Task ContinueLogin(LoginResult loginResult, string code)
131131
loginResult.Callback(result.Code == LoginResultCodes.Success, result.Message);
132132
}
133133

134-
public async Task<bool> LoginAsync(string username, string password, Func<LoginResult, string> need2faCode)
135-
{
136-
Guard.ArgumentNotNull(need2faCode, "need2faCode");
137-
138-
LoginResultData res = null;
139-
try
140-
{
141-
res = await loginManager.Login(OriginalUrl, username, password);
142-
}
143-
catch (Exception)
144-
{
145-
return false;
146-
}
147-
148-
if (res.Code == LoginResultCodes.CodeRequired)
149-
{
150-
var resultCache = new LoginResult(res, null, null);
151-
var code = need2faCode(resultCache);
152-
return await ContinueLoginAsync(resultCache, need2faCode, code);
153-
}
154-
else
155-
{
156-
return res.Code == LoginResultCodes.Success;
157-
}
158-
}
159-
160-
public async Task<bool> ContinueLoginAsync(LoginResult loginResult, Func<LoginResult, string> need2faCode, string code)
161-
{
162-
LoginResultData result = null;
163-
try
164-
{
165-
result = await loginManager.ContinueLogin(loginResult.Data, code);
166-
}
167-
catch (Exception)
168-
{
169-
return false;
170-
}
171-
172-
if (result.Code == LoginResultCodes.CodeFailed)
173-
{
174-
var resultCache = new LoginResult(result, null, null);
175-
code = need2faCode(resultCache);
176-
if (String.IsNullOrEmpty(code))
177-
return false;
178-
return await ContinueLoginAsync(resultCache, need2faCode, code);
179-
}
180-
return result.Code == LoginResultCodes.Success;
181-
}
182-
183134
private async Task<GitHubUser> GetCurrentUser()
184135
{
185136
//TODO: ONE_USER_LOGIN This assumes we only support one login

src/GitHub.Api/Application/IApiClient.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ Task CreateRepository(string name, string description, bool isPrivate,
1212
Task GetOrganizations(Action<Organization[]> onSuccess, Action<Exception> onError = null);
1313
Task Login(string username, string password, Action<LoginResult> need2faCode, Action<bool, string> result);
1414
Task ContinueLogin(LoginResult loginResult, string code);
15-
Task<bool> LoginAsync(string username, string password, Func<LoginResult, string> need2faCode);
1615
Task Logout(UriString host);
1716
Task GetCurrentUser(Action<GitHubUser> onSuccess, Action<Exception> onError = null);
1817
}

src/GitHub.Api/Authentication/LoginManager.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,11 @@ public async Task<LoginResultData> Login(
8585
}
8686

8787
keychain.SetToken(host, loginResultData.Token);
88-
await keychain.Save(host);
88+
89+
if (loginResultData.Code == LoginResultCodes.Success)
90+
{
91+
await keychain.Save(host);
92+
}
8993

9094
return loginResultData;
9195
}

0 commit comments

Comments
 (0)