using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using RazorPagesMovie.Data; namespace RazorPagesMovie.Models; public static class SeedData { public static void Initialize(IServiceProvider serviceProvider) { using (var context = new RazorPagesMovieContext( serviceProvider.GetRequiredService>())) { if (context == null) { throw new ArgumentNullException("Null RazorPagesMovieContext"); } if (!context.AdminUser.Any()) { var accounts = serviceProvider.GetRequiredService() .GetSection("AdminAccounts") .Get>() ?? new List(); var hasher = new PasswordHasher(); foreach (var account in accounts) { if (string.IsNullOrWhiteSpace(account.Username) || string.IsNullOrWhiteSpace(account.Password)) { continue; } var user = new AdminUser { Username = account.Username }; user.PasswordHash = hasher.HashPassword(user, account.Password); context.AdminUser.Add(user); } context.SaveChanges(); } } } private class AdminAccountSeed { public string Username { get; set; } = string.Empty; public string Password { get; set; } = string.Empty; } }