public static async Task SeedDb(IConfiguration config, IHostEnvironment env, IServiceProvider serviceProvider) { if (env.IsDevelopment()) { using (var scope = serviceProvider.CreateScope()) { var userManager = (UserManager <PuckUser>)scope.ServiceProvider.GetService(typeof(UserManager <PuckUser>)); var roleManager = (RoleManager <PuckRole>)scope.ServiceProvider.GetService(typeof(RoleManager <PuckRole>)); var repo = scope.ServiceProvider.GetService <I_Puck_Repository>(); if (repo.GetPuckUser().Count() == 0) { var roles = new List <string> { PuckRoles.Cache, PuckRoles.Create, PuckRoles.Delete, PuckRoles.Domain, PuckRoles.Edit, PuckRoles.Localisation , PuckRoles.Move, PuckRoles.Notify, PuckRoles.Publish, PuckRoles.Puck, PuckRoles.Revert, PuckRoles.Settings, PuckRoles.Sort, PuckRoles.Tasks , PuckRoles.Unpublish, PuckRoles.Users, PuckRoles.Republish, PuckRoles.Copy, PuckRoles.ChangeType, PuckRoles.TimedPublish, PuckRoles.Audit }; foreach (var roleName in roles) { if (!await roleManager.RoleExistsAsync(roleName)) { var role = new PuckRole(); role.Name = roleName; await roleManager.CreateAsync(role); } } var adminEmail = config.GetValue <string>("InitialUserEmail"); var adminPassword = config.GetValue <string>("InitialUserPassword"); if (!string.IsNullOrEmpty(adminEmail)) { var admin = await userManager.FindByEmailAsync(adminEmail); if (admin == null) { admin = new PuckUser { Email = adminEmail, UserName = adminEmail }; var result = await userManager.CreateAsync(admin, adminPassword); } //userManager.AddPassword(admin.Id, adminPassword); foreach (var roleName in roles) { if (!await userManager.IsInRoleAsync(admin, roleName)) { await userManager.AddToRoleAsync(admin, roleName); } } } } } } }
public static async Task SeedDb(IConfiguration config, IHostEnvironment env, IServiceProvider serviceProvider) { if (env.IsDevelopment() || env.IsStaging()) { using (var scope = serviceProvider.CreateScope()) { var userManager = (UserManager <PuckUser>)scope.ServiceProvider.GetService(typeof(UserManager <PuckUser>)); var roleManager = (RoleManager <PuckRole>)scope.ServiceProvider.GetService(typeof(RoleManager <PuckRole>)); var repo = scope.ServiceProvider.GetService <I_Puck_Repository>(); var roles = new List <string> { PuckRoles.Cache, PuckRoles.Create, PuckRoles.Delete, PuckRoles.Domain, PuckRoles.Edit, PuckRoles.Localisation , PuckRoles.Move, PuckRoles.Notify, PuckRoles.Publish, PuckRoles.Puck, PuckRoles.Revert, PuckRoles.Settings, PuckRoles.Sort, PuckRoles.Tasks , PuckRoles.Unpublish, PuckRoles.Users, PuckRoles.Republish, PuckRoles.Copy, PuckRoles.ChangeType, PuckRoles.TimedPublish, PuckRoles.Audit, PuckRoles.Sync, PuckRoles.WorkflowDelete }; foreach (var roleName in roles) { if (!await roleManager.RoleExistsAsync(roleName)) { var role = new PuckRole(); role.Name = roleName; await roleManager.CreateAsync(role); } } if (repo.GetPuckUser().Count() == 0) { var adminEmail = config.GetValue <string>("InitialUserEmail"); var adminPassword = config.GetValue <string>("InitialUserPassword"); if (!string.IsNullOrEmpty(adminEmail) && !string.IsNullOrEmpty(adminPassword)) { var admin = await userManager.FindByEmailAsync(adminEmail); if (admin == null) { admin = new PuckUser { Email = adminEmail, UserName = adminEmail, PuckUserGroups = "Administrator," }; var result = await userManager.CreateAsync(admin, adminPassword); if (!result.Succeeded) { string message = "Initial user could not be created, make sure you've set the InitialUserEmail and InitialUserPassword appSettings correctly - " + string.Join(" ", result.Errors.Select(x => x.Description)); throw new Exception(message); } } //userManager.AddPassword(admin.Id, adminPassword); foreach (var roleName in roles) { if (!await userManager.IsInRoleAsync(admin, roleName)) { await userManager.AddToRoleAsync(admin, roleName); } } PuckCache.JustSeeded = true; } else { throw new Exception("Initial user could not be created, make sure you've set the InitialUserEmail and InitialUserPassword appSettings"); } } } } }