From be1c28f7c3a5cce75355877e1986c75f74240888 Mon Sep 17 00:00:00 2001 From: Anran Zhang Date: Tue, 14 Jun 2022 15:16:20 +0800 Subject: [PATCH 1/2] Avoid adding empty providers --- .../WindowsProvider.cs | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/CommunityToolkit.Authentication.Uwp/WindowsProvider.cs b/CommunityToolkit.Authentication.Uwp/WindowsProvider.cs index b0f1235..6260257 100644 --- a/CommunityToolkit.Authentication.Uwp/WindowsProvider.cs +++ b/CommunityToolkit.Authentication.Uwp/WindowsProvider.cs @@ -33,7 +33,7 @@ public class WindowsProvider : BaseProvider private const string SettingsKeyProviderId = "WindowsProvider_ProviderId"; private const string SettingsKeyProviderAuthority = "WindowsProvider_Authority"; - private static readonly SemaphoreSlim SemaphoreSlim = new (1); + private static readonly SemaphoreSlim SemaphoreSlim = new(1); // Default/minimal scopes for authentication, if none are provided. private static readonly string[] DefaultScopes = { "User.Read" }; @@ -562,24 +562,37 @@ private async Task> GetWebAccountProvidersAsync() if (_webAccountProviderConfig.WebAccountProviderType == WebAccountProviderType.Any || _webAccountProviderConfig.WebAccountProviderType == WebAccountProviderType.Msa) { - providers.Add(await WebAuthenticationCoreManager.FindAccountProviderAsync(MicrosoftProviderId, MicrosoftAccountAuthority)); + await FindAndAddProviderAsync(MicrosoftProviderId, MicrosoftAccountAuthority); } // AAD if (_webAccountProviderConfig.WebAccountProviderType == WebAccountProviderType.Any || _webAccountProviderConfig.WebAccountProviderType == WebAccountProviderType.Aad) { - providers.Add(await WebAuthenticationCoreManager.FindAccountProviderAsync(MicrosoftProviderId, AadAuthority)); + await FindAndAddProviderAsync(MicrosoftProviderId, AadAuthority); } // Local if (_webAccountProviderConfig.WebAccountProviderType == WebAccountProviderType.Any || _webAccountProviderConfig.WebAccountProviderType == WebAccountProviderType.Local) { - providers.Add(await WebAuthenticationCoreManager.FindAccountProviderAsync(LocalProviderId)); + await FindAndAddProviderAsync(LocalProviderId); } return providers; + + async Task FindAndAddProviderAsync( + string webAccountProviderId, + string authority = default) + { + var provider = string.IsNullOrEmpty(authority) + ? await WebAuthenticationCoreManager.FindAccountProviderAsync(webAccountProviderId) + : await WebAuthenticationCoreManager.FindAccountProviderAsync(webAccountProviderId, authority); + if (provider != null) + { + providers.Add(provider); + } + } } } } \ No newline at end of file From 43dc26b6c6167a083aca9df1d4aa813be0324368 Mon Sep 17 00:00:00 2001 From: Anran Zhang Date: Tue, 14 Jun 2022 15:35:06 +0800 Subject: [PATCH 2/2] Clean code --- CommunityToolkit.Authentication.Uwp/WindowsProvider.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CommunityToolkit.Authentication.Uwp/WindowsProvider.cs b/CommunityToolkit.Authentication.Uwp/WindowsProvider.cs index 6260257..12672ee 100644 --- a/CommunityToolkit.Authentication.Uwp/WindowsProvider.cs +++ b/CommunityToolkit.Authentication.Uwp/WindowsProvider.cs @@ -33,7 +33,7 @@ public class WindowsProvider : BaseProvider private const string SettingsKeyProviderId = "WindowsProvider_ProviderId"; private const string SettingsKeyProviderAuthority = "WindowsProvider_Authority"; - private static readonly SemaphoreSlim SemaphoreSlim = new(1); + private static readonly SemaphoreSlim SemaphoreSlim = new (1); // Default/minimal scopes for authentication, if none are provided. private static readonly string[] DefaultScopes = { "User.Read" };