Files
RobotApp/RobotApp/Data/ApplicationDbExtensions.cs
Đăng Nguyễn 70eac8a9c8 update identity
2025-09-26 09:37:06 +07:00

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");
}
}
}