/// <summary> /// Adds the <see cref="DiscordAuthenticationMiddleware"/> middleware to the specified /// <see cref="IApplicationBuilder"/>, which enables Discord authentication capabilities. /// </summary> /// <param name="app">The <see cref="IApplicationBuilder"/> to add the middleware to.</param> /// <param name="options">A <see cref="DiscordAuthenticationOptions"/> that specifies options for the middleware.</param> /// <returns>A reference to this instance after the operation has completed.</returns> public static IApplicationBuilder UseDiscordAuthentication( [NotNull] this IApplicationBuilder app, [NotNull] DiscordAuthenticationOptions options) { if (app == null) { throw new ArgumentNullException(nameof(app)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } return(app.UseMiddleware <DiscordAuthenticationMiddleware>(Options.Create(options))); }
/// <summary> /// Adds the <see cref="DiscordAuthenticationMiddleware"/> middleware to the specified /// <see cref="IApplicationBuilder"/>, which enables Discord authentication capabilities. /// </summary> /// <param name="app">The <see cref="IApplicationBuilder"/> to add the middleware to.</param> /// <param name="configuration">An action delegate to configure the provided <see cref="DiscordAuthenticationOptions"/>.</param> /// <returns>A reference to this instance after the operation has completed.</returns> public static IApplicationBuilder UseDiscordAuthentication( [NotNull] this IApplicationBuilder app, [NotNull] Action <DiscordAuthenticationOptions> configuration) { if (app == null) { throw new ArgumentNullException(nameof(app)); } if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var options = new DiscordAuthenticationOptions(); configuration(options); return(app.UseMiddleware <DiscordAuthenticationMiddleware>(Options.Create(options))); }
public void Configuration(IAppBuilder app) { app.CreatePerOwinContext(() => new DataContext()); app.CreatePerOwinContext <UserManager <User, int> >((o, c) => { var userManager = new UserManager <User, int>(new UserStore(c.Get <DataContext>())); userManager.UserValidator = new UserValidator <User, int>(userManager) { AllowOnlyAlphanumericUserNames = false }; return(userManager); }); app.CreatePerOwinContext <SignInManager <User, int> >((o, c) => new SignInManager <User, int>(c.GetUserManager <UserManager <User, int> >(), c.Authentication)); app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString("/account/login"), Provider = new CookieAuthenticationProvider { OnValidateIdentity = SecurityStampValidator.OnValidateIdentity <UserManager <User, int>, User, int>( TimeSpan.FromMinutes(30), async(manager, user) => await manager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie), user => user.GetUserId <int>()) } }); app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); app.UseGoogleAuthentication(new GoogleAuthenticationOptions { ClientId = ConfigurationManager.AppSettings["GoogleClientId"], ClientSecret = ConfigurationManager.AppSettings["GoogleSecret"] }); app.UseTwitterAuthentication(new TwitterAuthenticationOptions { ConsumerKey = ConfigurationManager.AppSettings["TwitterClientId"], ConsumerSecret = ConfigurationManager.AppSettings["TwitterSecret"] }); app.UseMicrosoftAccountAuthentication(new MicrosoftAccountAuthenticationOptions { ClientId = ConfigurationManager.AppSettings["MicrosoftClientId"], ClientSecret = ConfigurationManager.AppSettings["MicrosoftSecret"] }); app.UseTumblrAuthentication(new TumblrAuthenticationOptions { AppKey = ConfigurationManager.AppSettings["TumblrClientId"], AppSecret = ConfigurationManager.AppSettings["TumblrSecret"] }); app.UseDeviantArtAuthentication(new DeviantArtAuthenticationOptions { ClientId = ConfigurationManager.AppSettings["DeviantArtClientId"], ClientSecret = ConfigurationManager.AppSettings["DeviantArtSecret"] }); var discordOptions = new DiscordAuthenticationOptions { ClientId = ConfigurationManager.AppSettings["DiscordClientId"], ClientSecret = ConfigurationManager.AppSettings["DiscordSecret"], }; discordOptions.Scope.Clear(); discordOptions.Scope.Add("identify"); app.UseDiscordAuthentication(discordOptions); using (var ctx = new DataContext()) { var activeJobs = ctx.Jobs.Where(x => x.Status == JobStatus.Running).ToList(); activeJobs.ForEach(x => x.Status = JobStatus.Cancelled); ctx.SaveChanges(); } using (var ctx = new DataContext()) { var roles = ctx.Roles.ToList(); if (!roles.Any(x => x.Name == "Admin")) { roles.Add(new Role { Name = "Admin" }); } ctx.SaveChanges(); } }
// For more information on configuring authentication, please visit https://go.microsoft.com/fwlink/?LinkId=301864 public void ConfigureAuth(IAppBuilder app) { // Configure the db context, user manager and signin manager to use a single instance per request app.CreatePerOwinContext(ApplicationDbContext.Create); app.CreatePerOwinContext <ApplicationUserManager>(ApplicationUserManager.Create); app.CreatePerOwinContext <ApplicationSignInManager>(ApplicationSignInManager.Create); // Enable the application to use a cookie to store information for the signed in user // and to use a cookie to temporarily store information about a user logging in with a third party login provider // Configure the sign in cookie app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString("/Account/Login"), Provider = new CookieAuthenticationProvider { // Enables the application to validate the security stamp when the user logs in. // This is a security feature which is used when you change a password or add an external login to your account. OnValidateIdentity = SecurityStampValidator.OnValidateIdentity <ApplicationUserManager, ApplicationUser>( validateInterval: TimeSpan.FromMinutes(30), regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) } }); app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); // Enables the application to temporarily store user information when they are verifying the second factor in the two-factor authentication process. app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5)); // Enables the application to remember the second login verification factor such as phone or email. // Once you check this option, your second step of verification during the login process will be remembered on the device where you logged in from. // This is similar to the RememberMe option when you log in. app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie); // Uncomment the following lines to enable logging in with third party login providers //app.UseMicrosoftAccountAuthentication( // clientId: "", // clientSecret: ""); //app.UseTwitterAuthentication( // consumerKey: "", // consumerSecret: ""); //app.UseFacebookAuthentication( // appId: "", // appSecret: ""); //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions() //{ // ClientId = "", // ClientSecret = "" //}); DiscordAuthenticationOptions options = new DiscordAuthenticationOptions { ClientId = ConfigHelper.Instance.DiscordClientID, ClientSecret = ConfigHelper.Instance.DiscordClientSecret }; options.Scope.Add("identify"); options.Scope.Add("guilds"); app.UseDiscordAuthentication(options); }