Я пишу тесты в Symfony и использую светильники для загрузки тестовых данных в базу данных. Одна из объектов, которые мне нужно создать, - это пользователь, который имеет поле пароля. В производстве пароли используются с использованием argon2id, прежде чем храниться в базе данных. Поскольку это только для тестирования? У меня есть проблема при прохождении параметра энкодера внутри приспособления, расположенного в абстрактном классе < /p>
fixture < /p>
class AuthUserFixture extends Fixture
{
private UserPasswordEncoderInterface $encoder;
public function __construct(UserPasswordEncoderInterface $encoder) {}
/**
* @inheritDoc
*/
public function load(ObjectManager $manager): void {
$this->loadUsers($manager);
}
private function loadUsers(ObjectManager $manager): void
{
foreach ($this->getUserData() as [
$username, $usernameCanonical, $email, $emailCanonical, $enabled, $password, $roles
]) {
$user = new User();
$user->setUsername($username);
$user->setUsernameCanonical($usernameCanonical);
$user->setEmail($email);
$user->setEmailCanonical($emailCanonical);
$user->setEnabled($enabled);
$user->setRoles($roles);
$password = $this->encoder->encodePassword($user, $password);
$user->setPassword($password);
$manager->persist($user);
$this->addReference($username, $user);
}
$manager->flush();
}
private function getUserData(): array
{
// $userData = [$username, $usernameCanonical, $email, $emailCanonical, $enabled, $password, $roles];
return [
[
'User',
'user',
'usere@gmail.com',
'user@gmail.com',
true,
'7jKuXn97ReDK',
[User::ADMIN_DASHBOARD_ACCESS_ROLES_HAYSTACK]
],
];
}
}
< /code>
Abstract Class < /p>
/** @var KernelBrowser $client */
protected KernelBrowser $client;
/** @var EntityManagerInterface */
private $entityManager;
public static function setUpBeforeClass(): void
{
$kernel = static::createKernel();
$kernel->boot();
$entityManager = $kernel->getContainer()->get('doctrine')->getManager();
$loader = new Loader();
foreach (self::getFixtures() as $fixture) {
$loader->addFixture($fixture);
}
$purger = new ORMPurger();
$purger->setPurgeMode(ORMPurger::PURGE_MODE_DELETE);
$executor = new ORMExecutor($entityManager, $purger);
$executor->execute($loader->getFixtures());
}
protected function setUp(): void
{
parent::setUp();
$this->client = static::createClient();
$this->client->disableReboot();
$this->client->setServerParameter('HTTP_HOST', '172.19.0.1');
$this->entityManager = $this->client->getContainer()->get('doctrine.orm.entity_manager');
$this->entityManager->beginTransaction();
$this->entityManager->getConnection()->setAutoCommit(false);
}
protected function tearDown(): void
{
if ($this->entityManager->getConnection()->isTransactionActive()) {
try {
$this->entityManager->rollback();
} catch (\Exception $e) {
echo "Rollback error: " . $e->getMessage();
}
}
$this->entityManager->clear();
$this->entityManager->close();
parent::tearDown();
}
protected function apiLoginAs(string $username, string $password): void
{
$expectedBase64 = base64_encode("$username:$password");
$authHeader = 'Basic ' . $expectedBase64;
$this->client->setServerParameter('HTTP_Authorization', $authHeader);
}
private static function getFixtures(): iterable
{
return [
new AuthUserFixture(),
];
}
< /code>
Я не до конца понимаю, является ли реализация правильной. И как правильно правильно передать параметр к < /p>
private static function getFixtures(): iterable
{
return [
new AuthUserFixture($encoder),
];
}
< /code>
Поскольку при передаче этого параметра отображается ошибка < /p>
Уведомление: неопределенная переменная: Encoder < /p >
< /blockquote>
Как его инициализировать? и нужен ли мне конструктор в светильниках?
Подробнее здесь: https://stackoverflow.com/questions/794 ... he-databas
Должен ли я хэшировать пароль в приспособлении, если он хранится как argon2i в базе данных? ⇐ Php
Кемеровские программисты php общаются здесь
1738852680
Anonymous
Я пишу тесты в Symfony и использую светильники для загрузки тестовых данных в базу данных. Одна из объектов, которые мне нужно создать, - это пользователь, который имеет поле пароля. В производстве пароли используются с использованием argon2id, прежде чем храниться в базе данных. Поскольку это только для тестирования? У меня есть проблема при прохождении параметра энкодера внутри приспособления, расположенного в абстрактном классе < /p>
fixture < /p>
class AuthUserFixture extends Fixture
{
private UserPasswordEncoderInterface $encoder;
public function __construct(UserPasswordEncoderInterface $encoder) {}
/**
* @inheritDoc
*/
public function load(ObjectManager $manager): void {
$this->loadUsers($manager);
}
private function loadUsers(ObjectManager $manager): void
{
foreach ($this->getUserData() as [
$username, $usernameCanonical, $email, $emailCanonical, $enabled, $password, $roles
]) {
$user = new User();
$user->setUsername($username);
$user->setUsernameCanonical($usernameCanonical);
$user->setEmail($email);
$user->setEmailCanonical($emailCanonical);
$user->setEnabled($enabled);
$user->setRoles($roles);
$password = $this->encoder->encodePassword($user, $password);
$user->setPassword($password);
$manager->persist($user);
$this->addReference($username, $user);
}
$manager->flush();
}
private function getUserData(): array
{
// $userData = [$username, $usernameCanonical, $email, $emailCanonical, $enabled, $password, $roles];
return [
[
'User',
'user',
'usere@gmail.com',
'user@gmail.com',
true,
'7jKuXn97ReDK',
[User::ADMIN_DASHBOARD_ACCESS_ROLES_HAYSTACK]
],
];
}
}
< /code>
Abstract Class < /p>
/** @var KernelBrowser $client */
protected KernelBrowser $client;
/** @var EntityManagerInterface */
private $entityManager;
public static function setUpBeforeClass(): void
{
$kernel = static::createKernel();
$kernel->boot();
$entityManager = $kernel->getContainer()->get('doctrine')->getManager();
$loader = new Loader();
foreach (self::getFixtures() as $fixture) {
$loader->addFixture($fixture);
}
$purger = new ORMPurger();
$purger->setPurgeMode(ORMPurger::PURGE_MODE_DELETE);
$executor = new ORMExecutor($entityManager, $purger);
$executor->execute($loader->getFixtures());
}
protected function setUp(): void
{
parent::setUp();
$this->client = static::createClient();
$this->client->disableReboot();
$this->client->setServerParameter('HTTP_HOST', '172.19.0.1');
$this->entityManager = $this->client->getContainer()->get('doctrine.orm.entity_manager');
$this->entityManager->beginTransaction();
$this->entityManager->getConnection()->setAutoCommit(false);
}
protected function tearDown(): void
{
if ($this->entityManager->getConnection()->isTransactionActive()) {
try {
$this->entityManager->rollback();
} catch (\Exception $e) {
echo "Rollback error: " . $e->getMessage();
}
}
$this->entityManager->clear();
$this->entityManager->close();
parent::tearDown();
}
protected function apiLoginAs(string $username, string $password): void
{
$expectedBase64 = base64_encode("$username:$password");
$authHeader = 'Basic ' . $expectedBase64;
$this->client->setServerParameter('HTTP_Authorization', $authHeader);
}
private static function getFixtures(): iterable
{
return [
new AuthUserFixture(),
];
}
< /code>
Я не до конца понимаю, является ли реализация правильной. И как правильно правильно передать параметр к < /p>
private static function getFixtures(): iterable
{
return [
new AuthUserFixture($encoder),
];
}
< /code>
Поскольку при передаче этого параметра отображается ошибка < /p>
Уведомление: неопределенная переменная: Encoder < /p >
< /blockquote>
Как его инициализировать? и нужен ли мне конструктор в светильниках?
Подробнее здесь: [url]https://stackoverflow.com/questions/79418007/should-i-hash-the-password-in-a-fixture-if-its-stored-as-argon2i-in-the-databas[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия