Api/Brizco.Repository/Services/DbInitializerService.cs

118 lines
4.3 KiB
C#

using Task = System.Threading.Tasks.Task;
namespace Brizco.Repository.Services;
public class DbInitializerService(
ApplicationContext context,
RoleManager<ApplicationRole> roleManager,
UserManager<ApplicationUser> userManager,
IOptionsSnapshot<SiteSettings> adminUserSeedOptions,
ILogger<DbInitializerService> logger)
: IDbInitializerService
{
public void Initialize()
{
try
{
context.Database.Migrate();
logger.LogInformation("Migration SUCCESS !!!!");
}
catch (Exception e)
{
logger.LogError(e, e.Message);
}
}
public async Task SeedDate(bool force = false)
{
try
{
await SeedRoles();
var seedAdmin = adminUserSeedOptions.Value.UserSetting;
var user = await userManager.FindByNameAsync(seedAdmin.Username);
if (user == null)
{
var adminUser = new ApplicationUser
{
UserName = seedAdmin.Username,
Email = seedAdmin.Email,
EmailConfirmed = true,
LockoutEnabled = true,
FirstName = seedAdmin.FirstName,
LastName = seedAdmin.LastName,
Gender = Gender.Male,
PhoneNumberConfirmed = true,
PhoneNumber = seedAdmin.Phone,
BirthDate = DateTime.Now.AddYears(-23)
};
var adminUserResult = await userManager.CreateAsync(adminUser, seedAdmin.Password);
if (adminUserResult.Succeeded) await userManager.AddToRoleAsync(adminUser, seedAdmin.RoleName);
}
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
public async Task SeedRoles()
{
var seedAdmin = adminUserSeedOptions.Value.UserSetting;
var managerRole = await roleManager.FindByNameAsync(seedAdmin.RoleName);
if (managerRole == null)
{
managerRole = new ApplicationRole
{
Name = seedAdmin.RoleName,
EnglishName = seedAdmin.RoleName,
Description = "root admin role"
};
var adminRoleResult = await roleManager.CreateAsync(managerRole);
foreach (var claim in ApplicationClaims.AllClaims)
await roleManager.AddClaimAsync(managerRole, claim);
}
}
public async Task Refactor()
{
//var roles = await _roleManager.Roles.ToListAsync();
//foreach (var role in roles)
//{
// if (role.EnglishName == ApplicationRoles.Manager)
// {
// var claims = await _roleManager.GetClaimsAsync(role);
// foreach (var claim in claims)
// await _roleManager.RemoveClaimAsync(role,claim);
// foreach (var claim in ApplicationClaims.ManagerClaims)
// await _roleManager.AddClaimAsync(role, claim);
// }
// if (role.EnglishName == ApplicationRoles.ViewerOwner)
// {
// var claims = await _roleManager.GetClaimsAsync(role);
// foreach (var claim in claims)
// await _roleManager.RemoveClaimAsync(role, claim);
// foreach (var claim in ApplicationClaims.ViewerOwnerClaims)
// await _roleManager.AddClaimAsync(role, claim);
// }
// if (role.EnglishName == ApplicationRoles.SuperVisor)
// {
// var claims = await _roleManager.GetClaimsAsync(role);
// foreach (var claim in claims)
// await _roleManager.RemoveClaimAsync(role, claim);
// foreach (var claim in ApplicationClaims.SuperVisorClaims)
// await _roleManager.AddClaimAsync(role, claim);
// }
// if (role.EnglishName == ApplicationRoles.Staff)
// {
// var claims = await _roleManager.GetClaimsAsync(role);
// foreach (var claim in claims)
// await _roleManager.RemoveClaimAsync(role, claim);
// foreach (var claim in ApplicationClaims.StaffClaims)
// await _roleManager.AddClaimAsync(role, claim);
// }
//}
}
}