- Suppression des migrations, templates et configurations inutiles (ex. `compose.override.yaml`). - Mise à jour de l'entité `User` : - Renommage des attributs pour correspondre aux conventions (`emailDeSecours` → `alternateEmail`, etc.). - Implémentation d'un mapper `updateFromKazUser` pour synchroniser les données depuis l'API Kaz. - Refactorisation des migrations pour aligner les changements de schéma. - Mise à jour du formulaire utilisateur et des fixtures en conséquence. - Ajout du template Twig `profil_infos.html.twig` pour afficher les informations utilisateur. (A supprimer)
97 lines
3.8 KiB
PHP
97 lines
3.8 KiB
PHP
<?php
|
|
|
|
namespace App\DataFixtures;
|
|
|
|
use App\Entity\User;
|
|
use Doctrine\Bundle\FixturesBundle\Fixture;
|
|
use Doctrine\Persistence\ObjectManager;
|
|
use Faker\Factory;
|
|
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
|
|
|
|
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
|
|
{
|
|
# Initialisation de Faker en français
|
|
$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', 'ROLE_ORGANISATION']);
|
|
# 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->setAlternateEmail($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);
|
|
}
|
|
|
|
// Création d'un compte de test fixe
|
|
$admin = new User();
|
|
$admin->setEmail('admin@kaz.bzh');
|
|
$admin->setRoles(['ROLE_USER', 'ROLE_ADMIN', 'ROLE_ORGANISATION']);
|
|
$admin->setPassword($this->hasher->hashPassword($admin, 'password'));
|
|
$admin->setFirstName('Admin');
|
|
$admin->setLastName('KAZ');
|
|
|
|
// Remplissage des champs obligatoires restants pour éviter les erreurs SQL
|
|
$admin->setAlternateEmail('secours@kaz.bzh');
|
|
$admin->setIdentifiantKaz('ADMIN-KAZ-001');
|
|
$admin->setQuota('5G');
|
|
$admin->setEmailQuota('1G');
|
|
$admin->setNextcloudQuota('10G');
|
|
$admin->setHasNextcloudAccess(true);
|
|
$admin->setHasMobilizon(true);
|
|
$admin->setHasAgoraAccess(true);
|
|
|
|
$manager->persist($admin);
|
|
|
|
// Création d'un compte de test fixe
|
|
$melvin = new User();
|
|
$melvin->setEmail('melvin.leveque@kazkouil.fr');
|
|
$melvin->setRoles(['ROLE_USER', 'ROLE_ADMIN', 'ROLE_ORGANISATION']);
|
|
$melvin->setPassword($this->hasher->hashPassword($melvin, 'password'));
|
|
$melvin->setFirstName('');
|
|
$melvin->setLastName('');
|
|
|
|
$melvin->setAlternateEmail('');
|
|
$melvin->setIdentifiantKaz('MELVIN-KAZ-001');
|
|
$melvin->setQuota('5G');
|
|
$melvin->setEmailQuota('1G');
|
|
$melvin->setNextcloudQuota('10G');
|
|
$melvin->setHasNextcloudAccess(true);
|
|
$melvin->setHasMobilizon(true);
|
|
$melvin->setHasAgoraAccess(true);
|
|
|
|
$manager->persist($melvin);
|
|
|
|
# Exécution réelle des requêtes SQL (envoi vers la base), une fois la bouche finie
|
|
$manager->flush();
|
|
}
|
|
}
|