<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use App\Entity\User;
use App\Service\Doctrine\Migrations\AwareHasherInterface;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20221226063308 extends AbstractMigration implements ContainerAwareInterface, AwareHasherInterface
{
private UserPasswordHasherInterface $hasher;
private EntityManagerInterface $em;
private User $adminUser;
public function setContainer(ContainerInterface $container = null)
{
$this->em = $container->get('doctrine.orm.entity_manager');
}
public function setHasher(UserPasswordHasherInterface $hasher): void
{
$this->hasher = $hasher;
}
public function getDescription(): string
{
return '';
}
public function up(Schema $schema): void
{
$this->adminUser = $this->em->getRepository(User::class)->findOneBy(['email' => $_ENV['SUPERUSER_EMAIL']]);
$user = new User();
$user->setEmail('ministry@etton.ru');
$user->setFirstName('Сидор');
$user->setSecondName('Сидорович');
$user->setLastName('Сидоров');
$user->addRole(User::ROLE_MINISTRY_OFFICER);
$user->setCreatedBy($this->adminUser);
$user->setCreatedAt(new \DateTime());
$password = $this->hasher->hashPassword($user, 'ministry');
$user->setPassword($password);
$this->em->persist($user);
$this->em->flush();
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->connection->delete('"user"', ['email' => 'ministry@etton.ru']);
}
}