From a096dd5c25c6aee22bd2134a1d797fb9fbafc4e4 Mon Sep 17 00:00:00 2001 From: Vineeth Thomas Alex Date: Fri, 10 Nov 2023 09:57:11 -0800 Subject: [PATCH 1/7] Added PAT flow to Login to any host (#271) * Added PAT flow and Credman calls --- .../DeveloperId/DeveloperIdProvider.cs | 49 ++++++++++++++++--- 1 file changed, 43 insertions(+), 6 deletions(-) diff --git a/src/GitHubExtension/DeveloperId/DeveloperIdProvider.cs b/src/GitHubExtension/DeveloperId/DeveloperIdProvider.cs index db7be001..7fef1124 100644 --- a/src/GitHubExtension/DeveloperId/DeveloperIdProvider.cs +++ b/src/GitHubExtension/DeveloperId/DeveloperIdProvider.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation and Contributors // Licensed under the MIT license. +using System.Security; using Microsoft.UI; using Microsoft.Windows.DevHome.SDK; using Octokit; @@ -93,7 +94,7 @@ public IAsyncOperation LoginNewDeveloperIdAsync() oauthRequest.AwaitCompletion(); - var devId = CreateOrUpdateDeveloperId(oauthRequest); + var devId = CreateOrUpdateDeveloperIdFromOauthRequest(oauthRequest); oauthRequest.Dispose(); Log.Logger()?.ReportInfo($"New DeveloperId logged in"); @@ -102,6 +103,28 @@ public IAsyncOperation LoginNewDeveloperIdAsync() }).AsAsyncOperation(); } + private DeveloperId LoginNewDeveloperIdWithPAT(Uri hostAddress, SecureString personalAccessToken) + { + try + { + GitHubClient gitHubClient = new (new ProductHeaderValue(Constants.DEV_HOME_APPLICATION_NAME), hostAddress); + var credentials = new Credentials(new System.Net.NetworkCredential(string.Empty, personalAccessToken).Password); + gitHubClient.Credentials = credentials; + var newUser = gitHubClient.User.Current().Result; + DeveloperId developerId = new (newUser.Login, newUser.Name, newUser.Email, newUser.Url, gitHubClient); + SaveOrOverwriteDeveloperId(developerId, personalAccessToken); + + Log.Logger()?.ReportInfo($"{developerId.LoginId} logged in with PAT flow to {developerId.GetHostAddress()}"); + + return developerId; + } + catch (Exception ex) + { + Log.Logger()?.ReportError($"Error while logging in with PAT to {hostAddress.AbsoluteUri} : {ex.Message}"); + throw; + } + } + private OAuthRequest? LoginNewDeveloperId() { OAuthRequest oauthRequest = new (); @@ -208,10 +231,8 @@ public DeveloperId GetDeveloperIdInternal(IDeveloperId devId) } // Internal Functions. - private DeveloperId CreateOrUpdateDeveloperId(OAuthRequest oauthRequest) + private void SaveOrOverwriteDeveloperId(DeveloperId newDeveloperId, SecureString accessToken) { - // Query necessary data and populate Developer Id. - var newDeveloperId = oauthRequest.RetrieveDeveloperId(); var duplicateDeveloperIds = DeveloperIds.Where(d => d.Url.Equals(newDeveloperId.Url, StringComparison.OrdinalIgnoreCase)); if (duplicateDeveloperIds.Any()) @@ -220,7 +241,7 @@ private DeveloperId CreateOrUpdateDeveloperId(OAuthRequest oauthRequest) try { // Save the credential to Credential Vault. - CredentialVault.SaveAccessTokenToVault(duplicateDeveloperIds.Single().LoginId, oauthRequest.AccessToken); + CredentialVault.SaveAccessTokenToVault(duplicateDeveloperIds.Single().LoginId, accessToken); try { @@ -244,7 +265,7 @@ private DeveloperId CreateOrUpdateDeveloperId(OAuthRequest oauthRequest) DeveloperIds.Add(newDeveloperId); } - CredentialVault.SaveAccessTokenToVault(newDeveloperId.LoginId, oauthRequest.AccessToken); + CredentialVault.SaveAccessTokenToVault(newDeveloperId.LoginId, accessToken); try { @@ -255,6 +276,22 @@ private DeveloperId CreateOrUpdateDeveloperId(OAuthRequest oauthRequest) Log.Logger()?.ReportError($"LoggedIn event signaling failed: {error}"); } } + } + + private DeveloperId CreateOrUpdateDeveloperIdFromOauthRequest(OAuthRequest oauthRequest) + { + // Query necessary data and populate Developer Id. + var newDeveloperId = oauthRequest.RetrieveDeveloperId(); + var accessToken = oauthRequest.AccessToken; + if (accessToken is null) + { + Log.Logger()?.ReportError($"Invalid AccessToken"); + throw new InvalidOperationException(); + } + + SaveOrOverwriteDeveloperId(newDeveloperId, accessToken); + + Log.Logger()?.ReportInfo($"{newDeveloperId.LoginId} logged in with OAuth flow to {newDeveloperId.GetHostAddress()}"); return newDeveloperId; } From b3b3b70a2d84d794f04758cbfde620ffc25b9814 Mon Sep 17 00:00:00 2001 From: Vineeth Thomas Alex Date: Tue, 14 Nov 2023 11:33:47 -0800 Subject: [PATCH 2/7] Explicitly disallow multiple accounts on GitHub extension (#274) --- .../DeveloperId/LoginUIController.cs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/GitHubExtension/DeveloperId/LoginUIController.cs b/src/GitHubExtension/DeveloperId/LoginUIController.cs index da19b399..0a5744fb 100644 --- a/src/GitHubExtension/DeveloperId/LoginUIController.cs +++ b/src/GitHubExtension/DeveloperId/LoginUIController.cs @@ -41,13 +41,22 @@ public IAsyncOperation OnAction(string action, string i { case LoginUIState.LoginPage: { - // Inputs are validated at this point. - _loginUI.Update(_loginUITemplate.GetLoginUITemplate(LoginUIState.WaitingPage), null, LoginUIState.WaitingPage); - Log.Logger()?.ReportDebug($"inputs: {inputs}"); - try { - var devId = await (DeveloperIdProvider.GetInstance() as DeveloperIdProvider).LoginNewDeveloperIdAsync(); + // If there is already a developer id, we should block another login. + if (DeveloperIdProvider.GetInstance().GetLoggedInDeveloperIdsInternal().Any()) + { + Log.Logger()?.ReportInfo($"DeveloperId {DeveloperIdProvider.GetInstance().GetLoggedInDeveloperIdsInternal().First().LoginId} already exists. Blocking login."); + _loginUI.Update(_loginUITemplate.GetLoginUITemplate(LoginUIState.LoginFailedPage), null, LoginUIState.LoginFailedPage); + operationResult = new ProviderOperationResult(ProviderOperationStatus.Failure, null, "Only one DeveloperId can be logged in at a time", "One DeveloperId already exists"); + break; + } + + // Inputs are validated at this point. + _loginUI.Update(_loginUITemplate.GetLoginUITemplate(LoginUIState.WaitingPage), null, LoginUIState.WaitingPage); + Log.Logger()?.ReportDebug($"inputs: {inputs}"); + + var devId = await DeveloperIdProvider.GetInstance().LoginNewDeveloperIdAsync(); if (devId != null) { var resourceLoader = new ResourceLoader(ResourceLoader.GetDefaultResourceFilePath(), "GitHubExtension/Resources"); From 023b99479f95c25fabde793a8ec1b50fa93c1d45 Mon Sep 17 00:00:00 2001 From: Eric Johnson Date: Fri, 17 Nov 2023 14:27:31 -0800 Subject: [PATCH 3/7] Publish r2r symbols --- build/azure-pipelines.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/build/azure-pipelines.yml b/build/azure-pipelines.yml index 8ca41d27..2b9db695 100644 --- a/build/azure-pipelines.yml +++ b/build/azure-pipelines.yml @@ -235,8 +235,11 @@ extends: - task: PublishSymbols@2 displayName: Publish Symbols inputs: - SearchPattern: '**/BuildOutput/**/*.pdb' - IndexSources: false + SearchPattern: >- + $(Build.SourcesDirectory)\BuildOutput\**\*.pdb + + $(Build.SourcesDirectory)\obj\**\*.r2r.ni.pdb + IndexSources: true SymbolServerType: TeamServices SymbolsProduct: DevHomeGitHubExtension From 9c7f1fc08ecd296708c848767fd455431365fbe0 Mon Sep 17 00:00:00 2001 From: Eric Johnson Date: Fri, 17 Nov 2023 14:36:39 -0800 Subject: [PATCH 4/7] Revert "Publish r2r symbols" This reverts commit 023b99479f95c25fabde793a8ec1b50fa93c1d45. --- build/azure-pipelines.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/build/azure-pipelines.yml b/build/azure-pipelines.yml index 2b9db695..8ca41d27 100644 --- a/build/azure-pipelines.yml +++ b/build/azure-pipelines.yml @@ -235,11 +235,8 @@ extends: - task: PublishSymbols@2 displayName: Publish Symbols inputs: - SearchPattern: >- - $(Build.SourcesDirectory)\BuildOutput\**\*.pdb - - $(Build.SourcesDirectory)\obj\**\*.r2r.ni.pdb - IndexSources: true + SearchPattern: '**/BuildOutput/**/*.pdb' + IndexSources: false SymbolServerType: TeamServices SymbolsProduct: DevHomeGitHubExtension From ec235eea54d3b30e4ba3de9c66c31e181085b066 Mon Sep 17 00:00:00 2001 From: Eric Johnson Date: Fri, 17 Nov 2023 15:10:13 -0800 Subject: [PATCH 5/7] Publish r2r symbols (#281) --- build/azure-pipelines.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/build/azure-pipelines.yml b/build/azure-pipelines.yml index 8ca41d27..2b9db695 100644 --- a/build/azure-pipelines.yml +++ b/build/azure-pipelines.yml @@ -235,8 +235,11 @@ extends: - task: PublishSymbols@2 displayName: Publish Symbols inputs: - SearchPattern: '**/BuildOutput/**/*.pdb' - IndexSources: false + SearchPattern: >- + $(Build.SourcesDirectory)\BuildOutput\**\*.pdb + + $(Build.SourcesDirectory)\obj\**\*.r2r.ni.pdb + IndexSources: true SymbolServerType: TeamServices SymbolsProduct: DevHomeGitHubExtension From cd8f245694adfb18334fc62b58df6ca20d42d668 Mon Sep 17 00:00:00 2001 From: Kristen Schau <47155823+krschau@users.noreply.github.com> Date: Fri, 1 Dec 2023 16:00:02 -0500 Subject: [PATCH 6/7] Use Dev Home GitHub icon for widget screenshots (#289) --- .../Widgets/Assets/screenshot.png | Bin 2409 -> 32653 bytes .../Package.appxmanifest | 30 +++++++++--------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/GitHubExtension/Widgets/Assets/screenshot.png b/src/GitHubExtension/Widgets/Assets/screenshot.png index e2b9ee14fe411743237a5ce49a34e06b2c797f43..197e17c7baa28ad520e810552c96c84836f8ab02 100644 GIT binary patch literal 32653 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 literal 2409 zcmds%dpOkV7RP@>2{SIWU1!`9T^NjOHX#xwW!y?Lg+b(U21CR~+od>eGu@a<_NWZG z58EWuh|P=%Q6Z5KL*qJQ6mo4(=daE=d;fi&=e*Ce-u15a$NH}Itk3giy1F<@NkSz7 z0FXjD*}Dt%eKib{{1oo3}@`>&v9QyJgzx zlWuacg@>Tgs;U`;qLGeYY$%Or2eq5GDD6_>00Aohp2Xn4q={aMOMbAs zRP9;{f!GJ7I^17Bb~q^kI6$XIIkvrl{tTrMQ4USY-|Z_A$E?Co)-4KYEb#A zDI=zxgL{a(K`FcHH<%3rHR<-TzFCLmY`dr%Sa*cdqP!Np!_Df>!aF&mtTpoQ+*gwu zL^7|kc^3cl6JY#y^dRYO?8LP9&}+zk7jig>pZzbHzia-lCOW!3 zV%R$!+vuNjVa<<&vLFn@Zy|9tZ=)us)BEr$qy*W|% z@4_VJ!JpSorfNhQcqsOo(EO^ksgHsh&(kaP36}X6VOdbH~Oj-wUf;s;;>eqqLMbInos!pRjEg zG&OQ>|L!$#qE9C`g4h2YU;ugC#lG4On>xEN+<@7QQE~fal~=`;_2YeLth>zjk-stL znSSPhwlYMZQqLc5sL7IIKGOWB!*96v^={)jm%A-uW`i+t?XMpkGu`gY(+y-3RHL>x zPmp} zCZ-|0YLto_HhZ@86Z6r0^rx2{@xawMS$kW|oq>JE>qh0DHz`q1O}QafaH3 z*Fv;s_4Ok^9kh4a_Z}{1O+$hFf|zM@s$F=qdq*ljB2Y~uXAmk5Z6V(A5!nL>{tyEW0$%KJ7ouW znQVV#Zc2x1kd8{=e)x{Oy1KexZcpKx$&Oo(a%A0v#}k8r=H0$+&tVgZE@bPfcM9;c zvUwzuqw&R_9D*;>leP7plp&sRV5tRDcmr@D{AQgAD^_8b&&}B(teM57=_2{@G%=W#tf-rq zj9R7q#m4(hqDKq|8Ap$-C~Wr7&qIZSCBljx)~hX^&OkgfoaQ1+PTqYu?0pv0!}g*i zx=(qu;Ld^0#0x~|c6(MP;pjRhAynbCWD7}iU`8Oe16z!;BR5A)WvOmyk;(7M3v_m3 z+uqcN^qHJ&zQ{ehWXP_DtU$C6!>KbjUtvvCDp8=;kI(nKSr2csGlKAZF3&rum98DS zemZ%!#KBrDX|FhT;9M#Y)HL<$?xLlAMyDPFatN}4KEtv&Z%}kF{;o`%p3ComU=|_b zIjZ5UO63&j)rKsH)dEU~m#bVJ$6>}qga~-G2E6_OlK;l$f0oI5VZ--ZY}1Xc+vp3Wojt2}Sh15! - + - + @@ -114,7 +114,7 @@ - + @@ -133,14 +133,14 @@ - + - + @@ -148,7 +148,7 @@ - + @@ -167,14 +167,14 @@ - + - + @@ -182,7 +182,7 @@ - + @@ -201,14 +201,14 @@ - + - + @@ -216,7 +216,7 @@ - + @@ -235,14 +235,14 @@ - + - + @@ -250,7 +250,7 @@ - + From e99de32302f172c55ce187b21f777c1eb2c0c873 Mon Sep 17 00:00:00 2001 From: Eric Johnson Date: Thu, 7 Dec 2023 13:34:44 -0800 Subject: [PATCH 7/7] Increase version to 0.8 --- build/azure-pipelines.yml | 2 +- build/scripts/CreateBuildInfo.ps1 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/azure-pipelines.yml b/build/azure-pipelines.yml index 2b9db695..b0c7a879 100644 --- a/build/azure-pipelines.yml +++ b/build/azure-pipelines.yml @@ -20,7 +20,7 @@ parameters: - release variables: - MSIXVersion: '0.700' + MSIXVersion: '0.800' solution: '**/GitHubExtension.sln' appxPackageDir: 'AppxPackages' testOutputArtifactDir: 'TestResults' diff --git a/build/scripts/CreateBuildInfo.ps1 b/build/scripts/CreateBuildInfo.ps1 index 7c6f4b66..6cb9d4df 100644 --- a/build/scripts/CreateBuildInfo.ps1 +++ b/build/scripts/CreateBuildInfo.ps1 @@ -5,7 +5,7 @@ Param( ) $Major = "0" -$Minor = "7" +$Minor = "8" $Patch = "99" # default to 99 for local builds $versionSplit = $Version.Split(".");