Symfony 7 – Konsol komutu oluşturarak kullanıcı parolasının değiştirilmesi

Symfony’de bir kullanıcının parolasını değiştirmek için bir konsol komutu oluşturabilirsiniz. Aşağıda, Symfony 7’de bir kullanıcı için parola değiştirme komutunun nasıl yazılacağını gösteren bir örnek bulunmaktadır:

1. Komut Sınıfını Oluştur

src/Command dizinine aşağıdaki gibi bir komut sınıfı ekleyin:

<?php

namespace App\Command;

use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Doctrine\ORM\EntityManagerInterface;
use App\Repository\UserRepository;

#[AsCommand(
    name: 'app:change-password',
    description: 'Kullanıcı parolasını değiştirir.',
)]
class ChangePasswordCommand extends Command
{
    private $userRepository;
    private $passwordHasher;
    private $entityManager;

    public function __construct(UserRepository $userRepository, UserPasswordHasherInterface $passwordHasher, EntityManagerInterface $entityManager)
    {
        $this->userRepository = $userRepository;
        $this->passwordHasher = $passwordHasher;
        $this->entityManager = $entityManager;

        parent::__construct();
    }

    protected function configure(): void
    {
        $this
            ->addArgument('email', InputArgument::REQUIRED, 'Kullanıcının e-posta adresi')
            ->addArgument('newPassword', InputArgument::REQUIRED, 'Yeni parola');
    }

    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $email = $input->getArgument('email');
        $newPassword = $input->getArgument('newPassword');

        $user = $this->userRepository->findOneBy(['email' => $email]);

        if (!$user) {
            $output->writeln('<error>Kullanıcı bulunamadı.</error>');
            return Command::FAILURE;
        }

        $hashedPassword = $this->passwordHasher->hashPassword($user, $newPassword);
        $user->setPassword($hashedPassword);

        $this->entityManager->flush();

        $output->writeln('<info>Parola başarıyla değiştirildi.</info>');
        return Command::SUCCESS;
    }
}

2. Komutu Kullanma

Komutu çalıştırmak için aşağıdaki gibi terminalden çalıştırabilirsiniz:

php bin/console app:change-password [email protected] yeni-parola

Açıklamalar

  • UserRepository: Kullanıcıyı bulmak için gerekli.
  • UserPasswordHasherInterface: Parolayı güvenli bir şekilde hashlemek için kullanılır.
  • EntityManagerInterface: Veritabanı değişikliklerini kaydetmek için gerekli.

Komut başarıyla çalıştırıldığında belirtilen kullanıcının parolası değiştirilecektir.

Ads Blocker Image Powered by Code Help Pro

Reklam Engelleyici Algılandı!

Reklamları engellemek için uzantı kullandığınızı tespit ettik.

Lütfen bu reklam engelleyiciyi devre dışı bırakarak ya da sitemize izin vererek bize destek olun.

Dikkat: VPN eklentiniz üzerinde de reklam engelleyici olabilir.