Fix fixtures

- Inject parameters directly instead of getting from container
- User PasswordHasher instead of EncoderFactory
- set parameters directly and correctly encode values to json
This commit is contained in:
2025-09-11 11:44:53 +02:00
parent 94a0eb1a0a
commit 895e1be9ef
5 changed files with 33 additions and 29 deletions

View File

@@ -19,7 +19,7 @@ use Chill\MainBundle\Entity\User;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Persistence\ObjectManager;
use Symfony\Component\Security\Core\Encoder\EncoderFactory;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
/**
* Load fixtures users into database.
@@ -53,6 +53,14 @@ class LoadUsers extends Fixture implements OrderedFixtureInterface
'centerB_permission_group_social', ],
],
];
private UserPasswordHasherInterface $passwordHasher;
public function __construct(UserPasswordHasherInterface $passwordHasher)
{
$this->passwordHasher = $passwordHasher;
}
public function getOrder(): int
{
return 1000;
@@ -74,17 +82,11 @@ class LoadUsers extends Fixture implements OrderedFixtureInterface
$defaultEncoder = new \Symfony\Component\PasswordHasher\Hasher\MessageDigestPasswordHasher('sha512', true, 5000);
$encoderFactory = new EncoderFactory([
User::class => $defaultEncoder,
]);
$hashedPassword = $this->passwordHasher->hashPassword($user, 'password');
$user
->setUsername($username)
->setPassword(
$encoderFactory
->getEncoder($user)
->encodePassword('password', $user->getSalt())
)
->setPassword($hashedPassword)
->setEmail(sprintf('%s@chill.social', \str_replace(' ', '', (string) $username)));
foreach ($params['groupCenterRefs'] as $groupCenterRef) {