/* * Licensed under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) * See https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers * for more information concerning the license and the contributors participating to this project. */ using Microsoft.AspNetCore.Authentication; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Options; using System.Diagnostics.CodeAnalysis; using ZeroFramework.IdentityServer.API.Infrastructure.Authentication.GitHub; namespace Microsoft.Extensions.DependencyInjection; /// /// Extension methods to add GitHub authentication capabilities to an HTTP application pipeline. /// public static class GitHubAuthenticationExtensions { /// /// Adds to the specified /// , which enables GitHub authentication capabilities. /// /// The authentication builder. /// The . public static AuthenticationBuilder AddGitHub([NotNull] this AuthenticationBuilder builder) { return builder.AddGitHub(GitHubAuthenticationDefaults.AuthenticationScheme, options => { }); } /// /// Adds to the specified /// , which enables GitHub authentication capabilities. /// /// The authentication builder. /// The delegate used to configure the OpenID 2.0 options. /// The . public static AuthenticationBuilder AddGitHub( [NotNull] this AuthenticationBuilder builder, [NotNull] Action configuration) { return builder.AddGitHub(GitHubAuthenticationDefaults.AuthenticationScheme, configuration); } /// /// Adds to the specified /// , which enables GitHub authentication capabilities. /// /// The authentication builder. /// The authentication scheme associated with this instance. /// The delegate used to configure the GitHub options. /// The . public static AuthenticationBuilder AddGitHub( [NotNull] this AuthenticationBuilder builder, [NotNull] string scheme, [NotNull] Action configuration) { return builder.AddGitHub(scheme, GitHubAuthenticationDefaults.DisplayName, configuration); } /// /// Adds to the specified /// , which enables GitHub authentication capabilities. /// /// The authentication builder. /// The authentication scheme associated with this instance. /// The optional display name associated with this instance. /// The delegate used to configure the GitHub options. /// The . public static AuthenticationBuilder AddGitHub( [NotNull] this AuthenticationBuilder builder, [NotNull] string scheme, [MaybeNull] string caption, [NotNull] Action configuration) { builder.Services.TryAddSingleton, GitHubPostConfigureOptions>(); return builder.AddOAuth(scheme, caption, configuration); } }