public AccountController(SignInManager <AspnetRunUser> signInManager, UserManager <AspnetRunUser> userManager, IOptions <AspnetRunSettings> options) { _signInManager = signInManager; _userManager = userManager; _aspnetRunSettings = options.Value; }
public static async Task SeedAsync(EZSubmitDbContext context, IServiceScope serviceScope, AspnetRunSettings aspnetRunSettings, int?retry = 0) { int retryForAvailability = retry.Value; try { if (!await context.Roles.AnyAsync()) { // Create the default roles (if they don't exist yet) var roleManager = serviceScope.ServiceProvider.GetService <RoleManager <IdentityRole> >(); await SeedDefaultRoles(roleManager); } if (!await context.Users.AnyAsync()) { // Create the default users (if they don't exist yet) var userManager = serviceScope.ServiceProvider.GetService <UserManager <ApplicationUser> >(); await SeedDefaultUsers(userManager, aspnetRunSettings.Seeding.DefaultAdminEmail, aspnetRunSettings.Seeding.DefaultUserEmail); } if (!await context.CaseForms.AnyAsync()) { // Create the default case forms var userManager = serviceScope.ServiceProvider.GetService <UserManager <ApplicationUser> >(); await SeedCaseForms(context, userManager, aspnetRunSettings.Seeding.DefaultUserEmail); } } catch (Exception exception) { if (retryForAvailability < 10) { retryForAvailability++; // TODO: get logger and log error await SeedAsync(context, serviceScope, aspnetRunSettings, retryForAvailability); } throw; } }
public static IServiceCollection AddCustomDbContext(this IServiceCollection services, AspnetRunSettings aspnetRunSettings) { // use in-memory database //services.AddDbContext<AspnetRunContext>(c => c.UseInMemoryDatabase("AspnetRun")); // Add AspnetRun DbContext services .AddEntityFrameworkSqlServer() .AddDbContext <AspnetRunContext>(options => options.UseSqlServer(aspnetRunSettings.ConnectionString, sqlOptions => { sqlOptions.EnableRetryOnFailure(maxRetryCount: 10, maxRetryDelay: TimeSpan.FromSeconds(30), errorNumbersToAdd: null); } ), ServiceLifetime.Scoped ); return(services); }
public static async void UseDbLayer(this IApplicationBuilder app, IServiceProvider serviceProvider, AspnetRunSettings aspnetRunSettings) { using (var serviceScope = serviceProvider.GetService <IServiceScopeFactory>().CreateScope()) { var context = serviceScope.ServiceProvider.GetService <EZSubmitDbContext>(); // TODO: Microsoft recommends NOT using this command for production environments due to possible conflicts if the app // is ever scaled out and running on multiple servers/instances/etc. But how to ensure the database is in place // before trying to Seed? // context.Database.Migrate(); await EZSubmitDbContextSeed.SeedAsync(context, serviceScope, aspnetRunSettings); } }
public static IServiceCollection AddCustomAuthentication(this IServiceCollection services, AspnetRunSettings aspnetRunSettings) { services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = aspnetRunSettings.Tokens.Issuer, ValidAudience = aspnetRunSettings.Tokens.Audience, IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(aspnetRunSettings.Tokens.Key)) }; }); return(services); }