creation des fixtures part2

This commit is contained in:
2026-03-16 13:08:31 +01:00
parent ef7f038ab8
commit 0b3e9bebb9

View File

@@ -2,16 +2,61 @@
namespace App\DataFixtures; namespace App\DataFixtures;
use App\Entity\User;
use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager; use Doctrine\Persistence\ObjectManager;
use Faker\Factory;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
class AppFixtures extends Fixture class AppFixtures extends Fixture
{ {
# Initialisation de l'outil de hachage de Symfony
private UserPasswordHasherInterface $hasher;
# Injection de dépendance pour récupérer le service de sécurité
public function __construct(UserPasswordHasherInterface $hasher)
{
$this->hasher = $hasher;
}
# Méthode principale qui génère les données en base
public function load(ObjectManager $manager): void public function load(ObjectManager $manager): void
{ {
// $product = new Product(); # Initialisation de Faker en français
// $manager->persist($product); $faker = Factory::create('fr_FR');
# Boucle pour créer 10 utilisateurs
for ($i = 0; $i < 10; $i++) {
# Instanciation d'un nouvel utilisateur (Adhérent)
$user = new User();
# Attribution d'un email aléatoire et unique
$user->setEmail($faker->unique()->safeEmail());
# Définition des droits d'accès de l'utilisateur
$user->setRoles(['ROLE_USER']);
# Hachage sécurisé du mot de passe "password"
$user->setPassword($this->hasher->hashPassword($user, 'password'));
# Définition d'un NOM et Prénom
$user->setFirstname($faker->firstName());
$user->setLastname($faker->lastName());
# autres fixtures à modifier plus tard
$user->setNextcloudQuota($faker->numberBetween(1, 20) . 'G');
$user->setQuota($faker->numberBetween(1, 10) . 'G');
$user->setEmailQuota('1G');
$user->setEmailDeSecours($faker->unique()->safeEmail());
$user->setHasAgoraAccess($faker->boolean(70)); // 70% de chance d'avoir accès
$user->setHasMobilizon($faker->boolean(50));
$user->setHasNextcloudAccess($faker->boolean(90));
$user->setIdentifiantKaz($faker->uuid());
# Préparation de l'enregistrement de l'objet en base de données
$manager->persist($user);
}
# Exécution réelle des requêtes SQL (envoi vers la base), une fois la bouche finie
$manager->flush(); $manager->flush();
} }
} }