92 lines
3.3 KiB
C#
92 lines
3.3 KiB
C#
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
|
|
|
|
/// <summary>
|
|
/// Estensione per seed iniziale dei dati nel DB (auth)
|
|
/// </summary>
|
|
/// <param name="modelBuilder"></param>
|
|
public static void Seed(this ModelBuilder modelBuilder)
|
|
{
|
|
// seed ruoli
|
|
List<IdentityRole> roles = new List<IdentityRole>()
|
|
{
|
|
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<IdentityRole>().HasData(roles);
|
|
|
|
// seed utenti
|
|
List<IdentityUser> users = new List<IdentityUser>()
|
|
{
|
|
// 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<IdentityUser>().HasData(users);
|
|
|
|
List<IdentityUserRole<string>> userRoles = new List<IdentityUserRole<string>>();
|
|
|
|
for (int i = 0; i < users.Count; i++)
|
|
{
|
|
|
|
// nei primi 3 rendo SuperAdmin
|
|
if (i < 2)
|
|
{
|
|
userRoles.Add(new IdentityUserRole<string>
|
|
{
|
|
UserId = users[i].Id,
|
|
RoleId = roles.First(q => q.Name == "SuperAdmin").Id
|
|
});
|
|
}
|
|
else
|
|
{
|
|
// aggiungo ruoli User x altri
|
|
userRoles.Add(new IdentityUserRole<string>
|
|
{
|
|
UserId = users[i].Id,
|
|
RoleId = roles.First(q => q.Name == "User").Id
|
|
});
|
|
}
|
|
}
|
|
|
|
modelBuilder.Entity<IdentityUserRole<string>>().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<IdentityUser> hasher = new PasswordHasher<IdentityUser>();
|
|
|
|
#endregion Public Methods
|
|
}
|
|
}
|