15-6 Seed d'un premier utilisateur
Pour la suite, vous aurez besoin d'utilisateur(s) dans votre base de données. Ainsi, créons un premier utilisateur à l'aide d'un seed.
-
Créez un fichier
SeedUtilisateurs
dans le dossierMigrations
.Snowfall.Data/Migrations/202502232200_SeedUtilisateurs.cs[Migration(202502232200)]
public class SeedUtilisateurs : Migration
{
public override void Up()
{
throw new NotImplementedException();
}
public override void Down()
{
throw new NotImplementedException();
}
} -
Créez une entrée dans la table
application_users
Snowfall.Data/Migrations/202502232200_SeedUtilisateurs.cs[Migration(202502232200)]
public class SeedUtilisateurs : Migration
{
public override void Up()
{
string utilisateurGuid = System.Guid.NewGuid().ToString();
Insert.IntoTable("application_users").Row(new
{
id = utilisateurGuid,
username = "u@ser.com",
normalized_username = "U@SER.COM",
email = "u@ser.com",
normalized_email = "U@SER.com",
email_confirmed = false,
password_hash = new PasswordHasher<ApplicationUser>().HashPassword(null, "!User122432"),
prenom = "Uti",
nom = "Lisateur",
});
}
public override void Down()
{
Delete.FromTable("application_users").AllRows();
}
}PasswordHasherLa classe
PasswordHasher
permet de hasher un mot de passe avec l'algorithme utilisé par Identity pour hasher les mots de passe. Cela fait en sorte que lorsque nous utiliserons Identity pour authentifier l'utilisateur, le mot de passe que nous venons de hasher sera valide! -
Ajoutez un rôle
Utilisateur
et le nouvel utilisateur à ce rôle.Snowfall.Data/Migrations/202502232200_SeedUtilisateurs.cs[Migration(202502232200)]
public class SeedUtilisateurs : Migration
{
public override void Up()
{
string utilisateurGuid = System.Guid.NewGuid().ToString();
Insert.IntoTable("application_users").Row(new
{
id = utilisateurGuid,
username = "u@ser.com",
normalized_username = "U@SER.COM",
email = "u@ser.com",
normalized_email = "U@SER.com",
email_confirmed = false,
password_hash = new PasswordHasher<ApplicationUser>().HashPassword(null, "!User122432"),
prenom = "Uti",
nom = "Lisateur",
});
// Rôles
int roleUtilisateurId = 1;
Insert.IntoTable("application_roles").Row(new
{
name = "UTILISATEUR",
normalized_name = "UTILISATEUR"
});
Insert.IntoTable("application_roles_users").Row(new
{
role_id = roleUtilisateurId,
user_id = utilisateurGuid
});
}
public override void Down()
{
Delete.FromTable("application_users").AllRows();
Delete.FromTable("application_roles").AllRows();
}
}
Exécuter le projet
Assurez-vous de démarrer le projet afin de vérifier que les migrations et les seeds sont bien exécutées. Si vous allez dans votre base de données, vous verrez un utilisateur dans votre base de données.