using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static StackExchange.Redis.Role;
namespace MagMan.Data.Admin
{
public static class ModelBuilderExtensions
{
#region Public Methods
///
/// Estensione per seed iniziale dei dati nel DB (auth)
///
///
public static void Seed(this ModelBuilder modelBuilder)
{
// seed ruoli
List roles = new List()
{
new IdentityRole { Name = "Undef", NormalizedName = "UNDEF" },
new IdentityRole { Name = "User", NormalizedName = "USER" },
new IdentityRole { Name = "SuperUser", NormalizedName = "SUPERUSER" },
new IdentityRole { Name = "Admin", NormalizedName = "ADMIN" },
new IdentityRole { Name = "SuperAdmin", NormalizedName = "SUPERADMIN" }
};
modelBuilder.Entity().HasData(roles);
// seed utenti
List users = new List()
{
// SuperAdmins
getNewUser("samuele.locatelli@egalware.com", "th1sIsTh3R1vrOfThNgt202401"),
getNewUser("emmanuele.sassi@egalware.com", "th1sIsTh3R1vrOfThNgt202402"),
getNewUser("luca.mazzoleni@egalware.com", "th1sIsTh3R1vrOfThNgt202403"),
// Admin egalware base
getNewUser("info@egalware.com", "th1sIsTh3R1vrOfThNgt202404")
};
modelBuilder.Entity().HasData(users);
List> userRoles = new List>();
for (int i = 0; i < users.Count; i++)
{
// nei primi 3 rendo SuperAdmin
if (i < 2)
{
userRoles.Add(new IdentityUserRole
{
UserId = users[i].Id,
RoleId = roles.First(q => q.Name == "SuperAdmin").Id
});
}
else
{
// aggiungo ruoli User x altri
userRoles.Add(new IdentityUserRole
{
UserId = users[i].Id,
RoleId = roles.First(q => q.Name == "User").Id
});
}
}
modelBuilder.Entity>().HasData(userRoles);
}
private static IdentityUser getNewUser(string email, string passwd)
{
var newRec = new IdentityUser
{
UserName = email,
NormalizedUserName = email.ToUpper(),
Email = email,
NormalizedEmail = email.ToUpper(),
EmailConfirmed = true,
PasswordHash = hasher.HashPassword(null!, passwd),
};
return newRec;
}
private static PasswordHasher hasher = new PasswordHasher();
#endregion Public Methods
}
}