Aller au contenu principal

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.

  1. Créez un fichier SeedUtilisateurs dans le dossier Migrations.

    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();
    }
    }
  2. 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();
    }
    }
    PasswordHasher

    La 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!

  3. 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.

img