diff --git a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/Server/CallWebApi.razor b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/Server/CallWebApi.razor.txt similarity index 100% rename from src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/Server/CallWebApi.razor rename to src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/Server/CallWebApi.razor.txt diff --git a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/Server/LoginDisplay.razor b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/Server/LoginDisplay.razor.txt similarity index 100% rename from src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/Server/LoginDisplay.razor rename to src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/Server/LoginDisplay.razor.txt diff --git a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/Server/ShowProfile.razor b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/Server/ShowProfile.razor.txt similarity index 100% rename from src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/Server/ShowProfile.razor rename to src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/Server/ShowProfile.razor.txt diff --git a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/wasm/Authentication.razor b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/wasm/Authentication.razor.txt similarity index 100% rename from src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/wasm/Authentication.razor rename to src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/wasm/Authentication.razor.txt diff --git a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/wasm/GraphClientExtensions.cs.txt b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/wasm/GraphClientExtensions.cs.txt new file mode 100644 index 0000000000..c3ab6999c9 --- /dev/null +++ b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/wasm/GraphClientExtensions.cs.txt @@ -0,0 +1,94 @@ +using System; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Components.WebAssembly.Authentication; +using Microsoft.Authentication.WebAssembly.Msal.Models; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Graph; + +/// +/// Adds services and implements methods to use Microsoft Graph SDK. +/// +internal static class GraphClientExtensions +{ + /// + /// Extension method for adding the Microsoft Graph SDK to IServiceCollection. + /// + /// + /// The MS Graph scopes to request + /// + public static IServiceCollection AddMicrosoftGraphClient(this IServiceCollection services, params string[] scopes) + { + services.Configure>(options => + { + foreach (var scope in scopes) + { + options.ProviderOptions.AdditionalScopesToConsent.Add(scope); + } + }); + + services.AddScoped(); + services.AddScoped(sp => new HttpClientHttpProvider(new HttpClient())); + services.AddScoped(sp => new GraphServiceClient( + sp.GetRequiredService(), + sp.GetRequiredService())); + return services; + } + + /// + /// Implements IAuthenticationProvider interface. + /// Tries to get an access token for Microsoft Graph. + /// + private class GraphAuthenticationProvider : IAuthenticationProvider + { + public GraphAuthenticationProvider(IAccessTokenProvider provider) + { + Provider = provider; + } + + public IAccessTokenProvider Provider { get; } + + public async Task AuthenticateRequestAsync(HttpRequestMessage request) + { + var result = await Provider.RequestAccessToken(new AccessTokenRequestOptions() + { + Scopes = new[] { "https://graph.microsoft.com/User.Read" } + }); + + if (result.TryGetToken(out var token)) + { + request.Headers.Authorization ??= new AuthenticationHeaderValue("Bearer", token.Value); + } + } + } + + private class HttpClientHttpProvider : IHttpProvider + { + private readonly HttpClient _client; + + public HttpClientHttpProvider(HttpClient client) + { + _client = client; + } + + public ISerializer Serializer { get; } = new Serializer(); + + public TimeSpan OverallTimeout { get; set; } = TimeSpan.FromSeconds(300); + + public void Dispose() + { + } + + public Task SendAsync(HttpRequestMessage request) + { + return _client.SendAsync(request); + } + + public Task SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken) + { + return _client.SendAsync(request, completionOption, cancellationToken); + } + } +} diff --git a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/wasm/LoginDisplay.razor b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/wasm/LoginDisplay.razor.txt similarity index 100% rename from src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/wasm/LoginDisplay.razor rename to src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/wasm/LoginDisplay.razor.txt diff --git a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/wasm/RedirectToLogin.razor b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/wasm/RedirectToLogin.razor.txt similarity index 100% rename from src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/wasm/RedirectToLogin.razor rename to src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/wasm/RedirectToLogin.razor.txt diff --git a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/wasm/UserProfile.razor.txt b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/wasm/UserProfile.razor.txt new file mode 100644 index 0000000000..9f47cd961f --- /dev/null +++ b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeFiles/Blazor/wasm/UserProfile.razor.txt @@ -0,0 +1,46 @@ +@page "/profile" +@using Microsoft.AspNetCore.Authorization +@using Microsoft.Graph +@inject Microsoft.Graph.GraphServiceClient GraphServiceClient +@attribute [Authorize] + +

User Profile

+@if (user == null) +{ +

Loading...

+} +else +{ + + + + + + + + + + + + + + + +
PropertyValue
DisplayName @user.DisplayName
UserPrincipalName @user.UserPrincipalName
+} + +@code { + User? user; + + protected override async Task OnInitializedAsync() + { + try + { + user = await GraphServiceClient.Me.Request().GetAsync(); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + } +} diff --git a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeModifierConfigs/cm_dotnet_blazorwasm.json b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeModifierConfigs/cm_dotnet_blazorwasm.json index ac125255ca..432fdb3bb4 100644 --- a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeModifierConfigs/cm_dotnet_blazorwasm.json +++ b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/CodeModifierConfigs/cm_dotnet_blazorwasm.json @@ -7,6 +7,14 @@ "Methods": { "Global": { "CodeChanges": [ + { + "Block": "builder.Services.AddMicrosoftGraphClient(\"https://graph.microsoft.com/User.Read\")", + "Options": [ "MicrosoftGraph" ], + "InsertAfter": "builder.Services.AddScoped", + "CodeFormatting": { + "Newline": true + } + }, { "Block": "builder.Services.AddMsalAuthentication()", "InsertAfter": "builder.Services.AddScoped", @@ -23,6 +31,16 @@ "Newline": true, "NumberOfSpaces": 4 } + }, + { + "Block": "options.ProviderOptions.DefaultAccessTokenScopes.Add(\"https://graph.microsoft.com/User.Read\")", + "Options": [ "MicrosoftGraph" ], + "CodeChangeType": "Lambda", + "Parameter": "options", + "Parent": "builder.Services.AddMsalAuthentication", + "CodeFormatting": { + "NumberOfSpaces": 4 + } } ] } @@ -71,7 +89,7 @@ "AddFilePath": "Pages/Authentication.razor" }, { - "FileName": "LoginDisplay.razor", + "FileName": "LoginDisplay.razor", "AddFilePath": "Shared/LoginDisplay.razor" }, { @@ -86,6 +104,27 @@ { "FileName": "RedirectToLogin.razor", "AddFilePath": "Shared/RedirectToLogin.razor" + }, + { + "FileName": "NavMenu.razor", + "Options": [ "MicrosoftGraph" ], + "Replacements": [ + { + "Block": "\r\n \r\n
\r\n \r\n Show profile\r\n \r\n
\r\n \r\n", + "ReplaceSnippet": "\r\n \r\n \r\n", + "Options": [ "MicrosoftGraph" ] + } + ] + }, + { + "FileName": "UserProfile.razor", + "AddFilePath": "Pages/UserProfile.razor", + "Options": [ "MicrosoftGraph" ] + }, + { + "FileName": "GraphClientExtensions.cs", + "AddFilePath": "Data/GraphClientExtensions.cs", + "Options": [ "MicrosoftGraph" ] } ] -} +} \ No newline at end of file diff --git a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/ProjectModifier.cs b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/ProjectModifier.cs index e1b2d37417..bfeebdc5e3 100644 --- a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/ProjectModifier.cs +++ b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/ProjectModifier.cs @@ -10,6 +10,7 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Editing; +using Microsoft.DotNet.MSIdentity.Properties; using Microsoft.DotNet.MSIdentity.Shared; using Microsoft.DotNet.MSIdentity.Tool; using Microsoft.DotNet.Scaffolding.Shared.CodeModifier; @@ -23,6 +24,7 @@ internal class ProjectModifier private readonly ProvisioningToolOptions _toolOptions; private readonly IEnumerable _files; private readonly IConsoleLogger _consoleLogger; + private PropertyInfo? _codeModifierConfigPropertyInfo; public ProjectModifier(ProvisioningToolOptions toolOptions, IEnumerable files, IConsoleLogger consoleLogger) { @@ -110,9 +112,14 @@ private PropertyInfo? CodeModifierConfigPropertyInfo { get { - var identifier = _toolOptions.ProjectTypeIdentifier.Replace('-', '_'); - var propertyInfo = AppProvisioningTool.Properties.FirstOrDefault(p => p.Name.StartsWith("cm") && p.Name.EndsWith(identifier)); - return propertyInfo; + if (_codeModifierConfigPropertyInfo == null) + { + var codeModifierName = $"cm_{_toolOptions.ProjectTypeIdentifier.Replace('-', '_')}"; + _codeModifierConfigPropertyInfo = AppProvisioningTool.Properties.FirstOrDefault( + p => p.Name.Equals(codeModifierName)); + } + + return _codeModifierConfigPropertyInfo; } } @@ -177,36 +184,32 @@ private void AddFile(CodeFile file, string identifier) { Directory.CreateDirectory(fileDir); File.WriteAllText(filePath, codeFileString); + _consoleLogger.LogMessage($"Added {filePath}.\n"); } } - private string GetCodeFileString(CodeFile file, string identifier) + internal static string GetCodeFileString(CodeFile file, string identifier) // todo make all code files strings { - var propertyInfo = GetPropertyInfo(file.FileName, identifier); - if (propertyInfo is null) + // Resource files cannot contain '-' (dash) or '.' (period) + var codeFilePropertyName = $"add_{identifier.Replace('-', '_')}_{file.FileName.Replace('.', '_')}"; + var property = AppProvisioningTool.Properties.FirstOrDefault( + p => p.Name.Equals(codeFilePropertyName)); + + if (property is null) { - throw new FormatException($"Resource file for {file.FileName} could not be found. "); + throw new FormatException($"Resource property for {file.FileName} could not be found. "); } - byte[] content = (propertyInfo.GetValue(null) as byte[])!; - string codeFileString = Encoding.UTF8.GetString(content); + var codeFileString = property.GetValue(typeof(Resources))?.ToString(); + if (string.IsNullOrEmpty(codeFileString)) { - throw new FormatException($"Resource file for {file.FileName} could not be parsed. "); + throw new FormatException($"CodeFile string for {file.FileName} was empty."); } return codeFileString; } - private PropertyInfo? GetPropertyInfo(string fileName, string identifier) - { - return AppProvisioningTool.Properties.Where( - p => p.Name.StartsWith("add") - && p.Name.Contains(identifier.Replace('-', '_')) // Resource files cannot have '-' (dash character) - && p.Name.Contains(fileName.Replace('.', '_'))) // Resource files cannot have '.' (period character) - .FirstOrDefault(); - } - internal async Task ModifyCsFile(CodeFile file, CodeAnalysis.Project project, CodeChangeOptions options) { if (file.FileName.Equals("Startup.cs")) @@ -249,7 +252,7 @@ internal async Task ModifyCsFile(CodeFile file, CodeAnalysis.Project project, Co var root = documentBuilder.AddUsings(options); if (file.FileName.Equals("Program.cs") && file.Methods.TryGetValue("Global", out var globalChanges)) { - + var filteredChanges = ProjectModifierHelper.FilterCodeSnippets(globalChanges.CodeChanges, options); var updatedIdentifer = ProjectModifierHelper.GetBuilderVariableIdentifierTransformation(root.Members); if (updatedIdentifer.HasValue) @@ -281,7 +284,7 @@ node is ClassDeclarationSyntax cds && modifiedClassDeclarationSyntax = documentBuilder.AddClassAttributes(modifiedClassDeclarationSyntax, options); modifiedClassDeclarationSyntax = ModifyMethods(modifiedClassDeclarationSyntax, documentBuilder, file.Methods, options); - + //add code snippets/changes. //replace class node with all the updates. diff --git a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/ProjectDescription/ProjectDescriptionReader.cs b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/ProjectDescription/ProjectDescriptionReader.cs index 8b9a90b805..8e815303a3 100644 --- a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/ProjectDescription/ProjectDescriptionReader.cs +++ b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/ProjectDescription/ProjectDescriptionReader.cs @@ -16,51 +16,80 @@ public class ProjectDescriptionReader private const string ProjectTypeIdSuffix = "dotnet-"; private readonly IEnumerable _files; - public List ProjectDescriptions { get; } + private List? _projectDescriptions; public ProjectDescriptionReader(IEnumerable files) { _files = files; - ProjectDescriptions = InitializeProjectDescriptions(); } - public ProjectDescription? GetProjectDescription(string projectTypeIdentifier) + public ProjectDescription? GetProjectDescription(string projectTypeId) { - string? projectTypeId = projectTypeIdentifier; - if (string.IsNullOrEmpty(projectTypeId) || projectTypeId == ProjectTypeIdSuffix) + if (!string.IsNullOrEmpty(projectTypeId) && !projectTypeId.Equals(ProjectTypeIdSuffix)) { - projectTypeId = InferProjectType(); + return ProjectDescriptions.FirstOrDefault(p => p.Identifier == projectTypeId); } - return projectTypeId != null ? ReadProjectDescription(projectTypeId) : null; - } + // TODO: could be both a Web app and WEB API. + foreach (ProjectDescription projectDescription in ProjectDescriptions) + { + var mergedMatches = projectDescription.GetMergedMatchesForProjectType(ProjectDescriptions); + if (mergedMatches.Any(matches => HasMatch(matches))) + { + return projectDescription; + } + } - private ProjectDescription? ReadProjectDescription(string identifier) => ProjectDescriptions.FirstOrDefault(p => p.Identifier == identifier); + return null; + } static readonly JsonSerializerOptions serializerOptionsWithComments = new JsonSerializerOptions { ReadCommentHandling = JsonCommentHandling.Skip }; - private ProjectDescription? ReadDescriptionFromFileContent(byte[] fileContent) + public List ProjectDescriptions { - string jsonText = Encoding.UTF8.GetString(fileContent); - return JsonSerializer.Deserialize(jsonText, serializerOptionsWithComments); + get + { + if (_projectDescriptions == null) + { + _projectDescriptions = AppProvisioningTool.Properties + .Where(p => p.Name.StartsWith("dotnet") && p.PropertyType == typeof(byte[])) + .Select(p => GetProjectDescription(p)) + .ToList(); + + // TODO: provide an extension mechanism to add such files outside the tool. + // In that case the validation would not be an exception? but would need to provide error messages + } + + return _projectDescriptions; + } } - private string? InferProjectType() + internal static ProjectDescription GetProjectDescription(PropertyInfo propertyInfo) { - // TODO: could be both a Web app and WEB API. - foreach (ProjectDescription projectDescription in ProjectDescriptions) + byte[] content = (propertyInfo.GetValue(null) as byte[])!; + + string jsonText = Encoding.UTF8.GetString(content); + var projectDescription = JsonSerializer.Deserialize(jsonText, serializerOptionsWithComments); + + if (projectDescription == null) { - var mergedMatches = projectDescription.GetMergedMatchesForProjectType(ProjectDescriptions); - var foundMatches = mergedMatches.Where(matches => HasMatch(matches)); - if (foundMatches.Any()) - { - return projectDescription.Identifier; - } + throw new FormatException($"Resource file { propertyInfo.Name } could not be parsed. "); + } + if (!projectDescription.IsValid()) + { + throw new FormatException($"Resource file {propertyInfo.Name} is missing Identitier or ProjectRelativeFolder is null. "); } + return projectDescription; + } + + private string? InferProjectType() + { + + return null; } @@ -136,33 +165,5 @@ private static bool FileMatches(string filePath, string[] matchAny) return false; } } - - public List InitializeProjectDescriptions() - { - var projectDescriptions = new List(); - foreach (PropertyInfo propertyInfo in AppProvisioningTool.Properties) - { - if (!(propertyInfo.Name.StartsWith("cm") || propertyInfo.Name.StartsWith("add"))) - { - byte[] content = (propertyInfo.GetValue(null) as byte[])!; - ProjectDescription? projectDescription = ReadDescriptionFromFileContent(content); - - if (projectDescription == null) - { - throw new FormatException($"Resource file { propertyInfo.Name } could not be parsed. "); - } - if (!projectDescription.IsValid()) - { - throw new FormatException($"Resource file {propertyInfo.Name} is missing Identitier or ProjectRelativeFolder is null. "); - } - - projectDescriptions.Add(projectDescription); - } - } - - return projectDescriptions; - // TODO: provide an extension mechanism to add such files outside the tool. - // In that case the validation would not be an exception? but would need to provide error messages - } } } diff --git a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/ProjectDescriptions/dotnet_blazorwasm.json b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/ProjectDescriptions/dotnet_blazorwasm.json index a21eeb03eb..25fdac493d 100644 --- a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/ProjectDescriptions/dotnet_blazorwasm.json +++ b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/ProjectDescriptions/dotnet_blazorwasm.json @@ -159,5 +159,8 @@ ], "CommonPackages": [ "Microsoft.Authentication.WebAssembly.Msal" + ], + "MicrosoftGraphPackages": [ + "Microsoft.Graph" ] } diff --git a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/Properties/Resources.Designer.cs b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/Properties/Resources.Designer.cs index 0322b7e11b..3ef46dd76c 100644 --- a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/Properties/Resources.Designer.cs +++ b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/Properties/Resources.Designer.cs @@ -1,509 +1,642 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Microsoft.DotNet.MSIdentity.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.DotNet.MSIdentity.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] add_dotnet_blazorserver_CallWebApi_razor { - get { - object obj = ResourceManager.GetObject("add_dotnet_blazorserver_CallWebApi_razor", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] add_dotnet_blazorserver_LoginDisplay_razor { - get { - object obj = ResourceManager.GetObject("add_dotnet_blazorserver_LoginDisplay_razor", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] add_dotnet_blazorserver_ShowProfile_razor { - get { - object obj = ResourceManager.GetObject("add_dotnet_blazorserver_ShowProfile_razor", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] add_dotnet_blazorwasm_Authentication_razor { - get { - object obj = ResourceManager.GetObject("add_dotnet_blazorwasm_Authentication_razor", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] add_dotnet_blazorwasm_LoginDisplay_razor { - get { - object obj = ResourceManager.GetObject("add_dotnet_blazorwasm_LoginDisplay_razor", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] add_dotnet_blazorwasm_RedirectToLogin_razor { - get { - object obj = ResourceManager.GetObject("add_dotnet_blazorwasm_RedirectToLogin_razor", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized string similar to Added {0} to user secrets.. - /// - internal static string AddingKeyToUserSecrets { - get { - return ResourceManager.GetString("AddingKeyToUserSecrets", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Adding package {0} . . .. - /// - internal static string AddingPackage { - get { - return ResourceManager.GetString("AddingPackage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Authentication is not enabled yet in this project. An app registration will be created, but the tool does not add the code yet (work in progress).. - /// - internal static string AuthNotEnabled { - get { - return ResourceManager.GetString("AuthNotEnabled", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Client secret - {0}.. - /// - internal static string ClientSecret { - get { - return ResourceManager.GetString("ClientSecret", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] cm_dotnet_blazorserver { - get { - object obj = ResourceManager.GetObject("cm_dotnet_blazorserver", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] cm_dotnet_blazorwasm { - get { - object obj = ResourceManager.GetObject("cm_dotnet_blazorwasm", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] cm_dotnet_blazorwasm_hosted { - get { - object obj = ResourceManager.GetObject("cm_dotnet_blazorwasm_hosted", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] cm_dotnet_minimal_api { - get { - object obj = ResourceManager.GetObject("cm_dotnet_minimal_api", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] cm_dotnet_webapi { - get { - object obj = ResourceManager.GetObject("cm_dotnet_webapi", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] cm_dotnet_webapp { - get { - object obj = ResourceManager.GetObject("cm_dotnet_webapp", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized string similar to Created app {0} - {1}.. - /// - internal static string CreatedAppRegistration { - get { - return ResourceManager.GetString("CreatedAppRegistration", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Detected project type {0}.. - /// - internal static string DetectedProjectType { - get { - return ResourceManager.GetString("DetectedProjectType", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] dotnet_blazor_server { - get { - object obj = ResourceManager.GetObject("dotnet_blazor_server", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] dotnet_blazorwasm { - get { - object obj = ResourceManager.GetObject("dotnet_blazorwasm", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] dotnet_blazorwasm_hosted { - get { - object obj = ResourceManager.GetObject("dotnet_blazorwasm_hosted", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] dotnet_minimal_api { - get { - object obj = ResourceManager.GetObject("dotnet_minimal_api", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] dotnet_web { - get { - object obj = ResourceManager.GetObject("dotnet_web", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] dotnet_webapi { - get { - object obj = ResourceManager.GetObject("dotnet_webapi", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] dotnet_webapp { - get { - object obj = ResourceManager.GetObject("dotnet_webapp", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized string similar to Error while running dotnet-user-secrets init. - /// - internal static string DotnetUserSecretsError { - get { - return ResourceManager.GetString("DotnetUserSecretsError", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to FAILED\n\n. - /// - internal static string Failed { - get { - return ResourceManager.GetString("Failed", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Failed to add package {0}. - /// - internal static string FailedAddPackage { - get { - return ResourceManager.GetString("FailedAddPackage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Failed to add client secret.. - /// - internal static string FailedClientSecret { - get { - return ResourceManager.GetString("FailedClientSecret", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Failed to add client secret for Azure AD app : {0}({1}). - /// - internal static string FailedClientSecretWithApp { - get { - return ResourceManager.GetString("FailedClientSecretWithApp", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Failed to create Azure AD/AD B2C app registration.. - /// - internal static string FailedToCreateApp { - get { - return ResourceManager.GetString("FailedToCreateApp", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Failed to retrieve all Azure AD/AD B2C objects(apps/service principals. - /// - internal static string FailedToRetrieveADObjectsError { - get { - return ResourceManager.GetString("FailedToRetrieveADObjectsError", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Failed to update Azure AD app registration {0} ({1}). - /// - internal static string FailedToUpdateApp { - get { - return ResourceManager.GetString("FailedToUpdateApp", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Failed to update Azure AD app, null {0}. - /// - internal static string FailedToUpdateAppNull { - get { - return ResourceManager.GetString("FailedToUpdateAppNull", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Initializing User Secrets . . .. - /// - internal static string InitializeUserSecrets { - get { - return ResourceManager.GetString("InitializeUserSecrets", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You'll need to remove the calls to Microsoft Graph as it's not supported by B2C apps.. - /// - internal static string MicrosoftGraphNotSupported { - get { - return ResourceManager.GetString("MicrosoftGraphNotSupported", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to No project found in {0}.. - /// - internal static string NoProjectFound { - get { - return ResourceManager.GetString("NoProjectFound", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Could not find app registration with matching ID in Azure AD (ID: {0}). - /// - internal static string NotFound { - get { - return ResourceManager.GetString("NotFound", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Azure AD app {0} ({1}) did not require any remote updates. - /// - internal static string NoUpdateNecessary { - get { - return ResourceManager.GetString("NoUpdateNecessary", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to "SignedOutCallbackPath": "/signout/B2C_1_susi", - /// "SignUpSignInPolicyId": "b2c_1_susi", - /// "ResetPasswordPolicyId": "b2c_1_reset", - /// "EditProfilePolicyId": "b2c_1_edit_profile", - ///. - /// - internal static string Policies { - get { - return ResourceManager.GetString("Policies", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Specify one .csproj file for the --project-path. - /// - internal static string ProjectPathError { - get { - return ResourceManager.GetString("ProjectPathError", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to SUCCESS. - /// - internal static string Success { - get { - return ResourceManager.GetString("Success", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Successfully updated app registration {0} ({1}). - /// - internal static string SuccessfullyUpdatedApp { - get { - return ResourceManager.GetString("SuccessfullyUpdatedApp", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Summary. - /// - internal static string Summary { - get { - return ResourceManager.GetString("Summary", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Updating appsettings.json. - /// - internal static string UpdatingAppSettingsJson { - get { - return ResourceManager.GetString("UpdatingAppSettingsJson", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Updating project files .... - /// - internal static string UpdatingProjectFiles { - get { - return ResourceManager.GetString("UpdatingProjectFiles", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Updating project packages .... - /// - internal static string UpdatingProjectPackages { - get { - return ResourceManager.GetString("UpdatingProjectPackages", resourceCulture); - } - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Microsoft.DotNet.MSIdentity.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.DotNet.MSIdentity.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to @page "/callwebapi" + /// + ///@using Microsoft.Identity.Web + /// + ///@inject IDownstreamWebApi downstreamAPI + ///@inject MicrosoftIdentityConsentAndConditionalAccessHandler ConsentHandler + /// + ///<h1>Call an API</h1> + /// + ///<p>This component demonstrates fetching data from a Web API.</p> + /// + ///@if (apiResult == null) + ///{ + /// <p><em>Loading...</em></p> + ///} + ///else + ///{ + /// <h2>API Result</h2> + /// @apiResult + ///} + /// + ///@code { + /// private HttpResponseMessage response; + /// private string apiResult; + /// + /// protected override async Task OnInitia [rest of string was truncated]";. + /// + internal static string add_dotnet_blazorserver_CallWebApi_razor { + get { + return ResourceManager.GetString("add_dotnet_blazorserver_CallWebApi_razor", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to <AuthorizeView> + /// <Authorized> + /// Hello, @context.User.Identity?.Name! + /// <a href="MicrosoftIdentity/Account/SignOut">Log out</a> + /// </Authorized> + /// <NotAuthorized> + /// <a href="MicrosoftIdentity/Account/SignIn">Log in</a> + /// </NotAuthorized> + ///</AuthorizeView> + ///. + /// + internal static string add_dotnet_blazorserver_LoginDisplay_razor { + get { + return ResourceManager.GetString("add_dotnet_blazorserver_LoginDisplay_razor", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to @page "/showprofile" + /// + ///@using Microsoft.Identity.Web + ///@using Microsoft.Graph + ///@inject Microsoft.Graph.GraphServiceClient GraphServiceClient + ///@inject MicrosoftIdentityConsentAndConditionalAccessHandler ConsentHandler + /// + ///<h1>Me</h1> + /// + ///<p>This component demonstrates fetching data from a service.</p> + /// + ///@if (user == null) + ///{ + /// <p><em>Loading...</em></p> + ///} + ///else + ///{ + /// <table class="table table-striped table-condensed" style="font-family: monospace"> + /// <tr> + /// <th>Property</th> + /// [rest of string was truncated]";. + /// + internal static string add_dotnet_blazorserver_ShowProfile_razor { + get { + return ResourceManager.GetString("add_dotnet_blazorserver_ShowProfile_razor", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to @page "/authentication/{action}" + ///@using Microsoft.AspNetCore.Components.WebAssembly.Authentication + ///<RemoteAuthenticatorView Action="@Action" /> + /// + ///@code{ + /// [Parameter] public string? Action { get; set; } + ///} + ///. + /// + internal static string add_dotnet_blazorwasm_Authentication_razor { + get { + return ResourceManager.GetString("add_dotnet_blazorwasm_Authentication_razor", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to using System; + ///using System.Net.Http; + ///using System.Net.Http.Headers; + ///using System.Threading; + ///using System.Threading.Tasks; + ///using Microsoft.AspNetCore.Components.WebAssembly.Authentication; + ///using Microsoft.Authentication.WebAssembly.Msal.Models; + ///using Microsoft.Extensions.DependencyInjection; + ///using Microsoft.Graph; + /// + ////// <summary> + ////// Adds services and implements methods to use Microsoft Graph SDK. + ////// </summary> + ///internal static class GraphClientExtensions + ///{ + /// /// <summary> + /// /// Extension [rest of string was truncated]";. + /// + internal static string add_dotnet_blazorwasm_GraphClientExtensions_cs { + get { + return ResourceManager.GetString("add_dotnet_blazorwasm_GraphClientExtensions_cs", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to @using Microsoft.AspNetCore.Components.Authorization + ///@using Microsoft.AspNetCore.Components.WebAssembly.Authentication + /// + ///@inject NavigationManager Navigation + ///@inject SignOutSessionStateManager SignOutManager + /// + ///<AuthorizeView> + /// <Authorized> + /// Hello, @context.User.Identity?.Name! + /// <button class="nav-link btn btn-link" @onclick="BeginLogout">Log out</button> + /// </Authorized> + /// <NotAuthorized> + /// <a href="authentication/login">Log in</a> + /// </NotAuthorized> + ///</AuthorizeView> /// [rest of string was truncated]";. + /// + internal static string add_dotnet_blazorwasm_LoginDisplay_razor { + get { + return ResourceManager.GetString("add_dotnet_blazorwasm_LoginDisplay_razor", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to @inject NavigationManager Navigation + /// + ///@code { + /// protected override void OnInitialized() + /// { + /// Navigation.NavigateTo($"authentication/login?returnUrl={Uri.EscapeDataString(Navigation.Uri)}"); + /// } + ///} + ///. + /// + internal static string add_dotnet_blazorwasm_RedirectToLogin_razor { + get { + return ResourceManager.GetString("add_dotnet_blazorwasm_RedirectToLogin_razor", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to @page "/profile" + ///@using Microsoft.AspNetCore.Authorization + ///@using Microsoft.Graph + ///@inject Microsoft.Graph.GraphServiceClient GraphServiceClient + ///@attribute [Authorize] + /// + ///<h3>User Profile</h3> + ///@if (user == null) + ///{ + /// <p><em>Loading...</em></p> + ///} + ///else + ///{ + /// <table class="table"> + /// <thead> + /// <tr> + /// <th>Property</th> + /// <th>Value</th> + /// </tr> + /// </thead> + /// <tr> + /// <td> DisplayName </td> + /// <td> @user.DisplayNa [rest of string was truncated]";. + /// + internal static string add_dotnet_blazorwasm_UserProfile_razor { + get { + return ResourceManager.GetString("add_dotnet_blazorwasm_UserProfile_razor", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Added {0} to user secrets.. + /// + internal static string AddingKeyToUserSecrets { + get { + return ResourceManager.GetString("AddingKeyToUserSecrets", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Adding package {0} . . .. + /// + internal static string AddingPackage { + get { + return ResourceManager.GetString("AddingPackage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Authentication is not enabled yet in this project. An app registration will be created, but the tool does not add the code yet (work in progress).. + /// + internal static string AuthNotEnabled { + get { + return ResourceManager.GetString("AuthNotEnabled", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Client secret - {0}.. + /// + internal static string ClientSecret { + get { + return ResourceManager.GetString("ClientSecret", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] cm_dotnet_blazorserver { + get { + object obj = ResourceManager.GetObject("cm_dotnet_blazorserver", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] cm_dotnet_blazorwasm { + get { + object obj = ResourceManager.GetObject("cm_dotnet_blazorwasm", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] cm_dotnet_blazorwasm_hosted { + get { + object obj = ResourceManager.GetObject("cm_dotnet_blazorwasm_hosted", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] cm_dotnet_minimal_api { + get { + object obj = ResourceManager.GetObject("cm_dotnet_minimal_api", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] cm_dotnet_webapi { + get { + object obj = ResourceManager.GetObject("cm_dotnet_webapi", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] cm_dotnet_webapp { + get { + object obj = ResourceManager.GetObject("cm_dotnet_webapp", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized string similar to Created app {0} - {1}.. + /// + internal static string CreatedAppRegistration { + get { + return ResourceManager.GetString("CreatedAppRegistration", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Detected project type {0}.. + /// + internal static string DetectedProjectType { + get { + return ResourceManager.GetString("DetectedProjectType", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] dotnet_blazor_server { + get { + object obj = ResourceManager.GetObject("dotnet_blazor_server", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] dotnet_blazorwasm { + get { + object obj = ResourceManager.GetObject("dotnet_blazorwasm", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] dotnet_blazorwasm_hosted { + get { + object obj = ResourceManager.GetObject("dotnet_blazorwasm_hosted", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] dotnet_minimal_api { + get { + object obj = ResourceManager.GetObject("dotnet_minimal_api", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] dotnet_web { + get { + object obj = ResourceManager.GetObject("dotnet_web", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] dotnet_webapi { + get { + object obj = ResourceManager.GetObject("dotnet_webapi", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] dotnet_webapp { + get { + object obj = ResourceManager.GetObject("dotnet_webapp", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized string similar to Error while running dotnet-user-secrets init. + /// + internal static string DotnetUserSecretsError { + get { + return ResourceManager.GetString("DotnetUserSecretsError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to FAILED\n\n. + /// + internal static string Failed { + get { + return ResourceManager.GetString("Failed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Failed to add package {0}. + /// + internal static string FailedAddPackage { + get { + return ResourceManager.GetString("FailedAddPackage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Failed to add client secret.. + /// + internal static string FailedClientSecret { + get { + return ResourceManager.GetString("FailedClientSecret", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Failed to add client secret for Azure AD app : {0}({1}). + /// + internal static string FailedClientSecretWithApp { + get { + return ResourceManager.GetString("FailedClientSecretWithApp", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Failed to create Azure AD/AD B2C app registration.. + /// + internal static string FailedToCreateApp { + get { + return ResourceManager.GetString("FailedToCreateApp", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Failed to retrieve all Azure AD/AD B2C objects(apps/service principals. + /// + internal static string FailedToRetrieveADObjectsError { + get { + return ResourceManager.GetString("FailedToRetrieveADObjectsError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Failed to update Azure AD app registration {0} ({1}). + /// + internal static string FailedToUpdateApp { + get { + return ResourceManager.GetString("FailedToUpdateApp", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Failed to update Azure AD app, null {0}. + /// + internal static string FailedToUpdateAppNull { + get { + return ResourceManager.GetString("FailedToUpdateAppNull", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Initializing User Secrets . . .. + /// + internal static string InitializeUserSecrets { + get { + return ResourceManager.GetString("InitializeUserSecrets", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to You'll need to remove the calls to Microsoft Graph as it's not supported by B2C apps.. + /// + internal static string MicrosoftGraphNotSupported { + get { + return ResourceManager.GetString("MicrosoftGraphNotSupported", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to No project found in {0}.. + /// + internal static string NoProjectFound { + get { + return ResourceManager.GetString("NoProjectFound", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not find app registration with matching ID in Azure AD (ID: {0}). + /// + internal static string NotFound { + get { + return ResourceManager.GetString("NotFound", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Azure AD app {0} ({1}) did not require any remote updates. + /// + internal static string NoUpdateNecessary { + get { + return ResourceManager.GetString("NoUpdateNecessary", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to "SignedOutCallbackPath": "/signout/B2C_1_susi", + /// "SignUpSignInPolicyId": "b2c_1_susi", + /// "ResetPasswordPolicyId": "b2c_1_reset", + /// "EditProfilePolicyId": "b2c_1_edit_profile", + ///. + /// + internal static string Policies { + get { + return ResourceManager.GetString("Policies", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Specify one .csproj file for the --project-path. + /// + internal static string ProjectPathError { + get { + return ResourceManager.GetString("ProjectPathError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to SUCCESS. + /// + internal static string Success { + get { + return ResourceManager.GetString("Success", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Successfully updated app registration {0} ({1}). + /// + internal static string SuccessfullyUpdatedApp { + get { + return ResourceManager.GetString("SuccessfullyUpdatedApp", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Summary. + /// + internal static string Summary { + get { + return ResourceManager.GetString("Summary", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Updating appsettings.json. + /// + internal static string UpdatingAppSettingsJson { + get { + return ResourceManager.GetString("UpdatingAppSettingsJson", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Updating project files .... + /// + internal static string UpdatingProjectFiles { + get { + return ResourceManager.GetString("UpdatingProjectFiles", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Updating project packages .... + /// + internal static string UpdatingProjectPackages { + get { + return ResourceManager.GetString("UpdatingProjectPackages", resourceCulture); + } + } + } +} diff --git a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/Properties/Resources.resx b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/Properties/Resources.resx index f2162e2b9f..7a912e551b 100644 --- a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/Properties/Resources.resx +++ b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/Properties/Resources.resx @@ -125,22 +125,28 @@ - ..\CodeReaderWriter\CodeFiles\Blazor\Server\CallWebApi.razor;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ..\CodeReaderWriter\CodeFiles\Blazor\Server\CallWebApi.razor.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 - ..\CodeReaderWriter\CodeFiles\Blazor\Server\LoginDisplay.razor;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ..\CodeReaderWriter\CodeFiles\Blazor\Server\LoginDisplay.razor.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 - ..\CodeReaderWriter\CodeFiles\Blazor\Server\ShowProfile.razor;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ..\CodeReaderWriter\CodeFiles\Blazor\Server\ShowProfile.razor.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 - ..\CodeReaderWriter\CodeFiles\Blazor\wasm\Authentication.razor;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ..\CodeReaderWriter\CodeFiles\Blazor\wasm\Authentication.razor.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8 + + + ..\CodeReaderWriter\CodeFiles\Blazor\wasm\GraphClientExtensions.cs.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 - ..\CodeReaderWriter\CodeFiles\Blazor\wasm\LoginDisplay.razor;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ..\CodeReaderWriter\CodeFiles\Blazor\wasm\LoginDisplay.razor.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 - ..\CodeReaderWriter\CodeFiles\Blazor\wasm\RedirectToLogin.razor;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ..\CodeReaderWriter\CodeFiles\Blazor\wasm\RedirectToLogin.razor.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8 + + + ..\CodeReaderWriter\CodeFiles\Blazor\wasm\UserProfile.razor.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 Authentication is not enabled yet in this project. An app registration will be created, but the tool does not add the code yet (work in progress). @@ -264,4 +270,4 @@ Updating project packages ... - \ No newline at end of file + diff --git a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/Tool/AppProvisioningTool.cs b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/Tool/AppProvisioningTool.cs index bc5947f85f..90eb93a61b 100644 --- a/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/Tool/AppProvisioningTool.cs +++ b/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/Tool/AppProvisioningTool.cs @@ -35,8 +35,7 @@ public class AppProvisioningTool : IMsAADTool internal AppSettingsModifier AppSettingsModifier { get => new AppSettingsModifier(ProvisioningToolOptions); } internal static IEnumerable? _properties; - internal static IEnumerable Properties => _properties ??= typeof(Resources).GetProperties(BindingFlags.Static | BindingFlags.NonPublic) - .Where(p => p.PropertyType == typeof(byte[])); + internal static IEnumerable Properties => _properties ??= typeof(Resources).GetProperties(BindingFlags.Static | BindingFlags.NonPublic); internal IEnumerable? _filePaths; private IEnumerable FilePaths => _filePaths ??= s_fileExtensions.SelectMany( @@ -63,8 +62,7 @@ public AppProvisioningTool(string commandName, ProvisioningToolOptions provision Environment.Exit(1); } - var projectDescription = ProjectDescriptionReader.GetProjectDescription( - ProvisioningToolOptions.ProjectTypeIdentifier); + var projectDescription = ProjectDescriptionReader.GetProjectDescription(ProvisioningToolOptions.ProjectTypeIdentifier); if (projectDescription == null) {