55 lines
1.9 KiB
C#
55 lines
1.9 KiB
C#
using Microsoft.AspNetCore.Identity;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace RobotApp.Data;
|
|
|
|
public static class ApplicationDbExtensions
|
|
{
|
|
public static async Task SeedApplicationDbAsync(this IServiceProvider serviceProvider)
|
|
{
|
|
using var scope = serviceProvider.GetRequiredService<IServiceScopeFactory>().CreateScope();
|
|
|
|
using var appDb = scope.ServiceProvider.GetRequiredService<ApplicationDbContext>();
|
|
|
|
await appDb.Database.MigrateAsync();
|
|
//await appDb.Database.EnsureCreatedAsync();
|
|
await appDb.SaveChangesAsync();
|
|
|
|
await scope.ServiceProvider.SeedRolesAsync();
|
|
await scope.ServiceProvider.SeedUsersAsync();
|
|
}
|
|
|
|
private static async Task SeedRolesAsync(this IServiceProvider serviceProvider)
|
|
{
|
|
var roleManager = serviceProvider.GetRequiredService<RoleManager<ApplicationRole>>();
|
|
|
|
if (!await roleManager.RoleExistsAsync("Administrator"))
|
|
{
|
|
await roleManager.CreateAsync(new ApplicationRole()
|
|
{
|
|
Name = "Administrator",
|
|
NormalizedName = "ADMINISTRATOR",
|
|
});
|
|
}
|
|
}
|
|
|
|
private static async Task SeedUsersAsync(this IServiceProvider serviceProvider)
|
|
{
|
|
using var userManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
|
|
if (await userManager.FindByNameAsync("admin") is null)
|
|
{
|
|
var admin = new ApplicationUser()
|
|
{
|
|
UserName = "admin",
|
|
Email = "administrator@phenikaa-x.com",
|
|
NormalizedUserName = "ADMINISTRATOR",
|
|
NormalizedEmail = "ADMINISTRATOR@PHENIKAA-X.COM",
|
|
EmailConfirmed = true,
|
|
};
|
|
|
|
await userManager.CreateAsync(admin, "robotics");
|
|
await userManager.AddToRoleAsync(admin, "Administrator");
|
|
}
|
|
}
|
|
}
|