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 } }