Symfony 4 : Kullanıcı Yönetimi ve Güvenlik
Kullanıcı sınıfını oluşturmadan önce güvenlik bileşenini projemize dahil etmemiz gerekmektedir. Bunun için aşağıdaki komutu çalıştırın.
=> composer require security
Kullanıcı Sınıfının Oluşturulması
Kullanıcı yönetimi için içerisinde id, username, password, email and isActive gibi temel özelliklerinin yer aldığı User isimli sınıfımızı oluşturmalıyız. Aşağıdaki komut sayesinde User Entity ve User Repository sınıfları otomatik olarak oluşturulmaktadır.
=> php bin/console make:entity User
Oluşturulan User sınıfını aşağıdaki gibi düzenleyiniz. @ORM\Table(name=”app_users”) içerisindeki app_users, veritabanınızda oluşturulacak olan kullanıcılar tablosunun ismidir. İstediğiniz şekilde farklı bir isim verebilirsiniz.
<?php
// src/Entity/User.php
namespaceAppEntity;useDoctrineORMMapping as ORM;
useSymfonyComponentSecurityCoreUserUserInterface;/**
* @ORM\Table(name=”app_users”)
* @ORM\Entity(repositoryClass=”App\Repository\UserRepository”)
*/
class User implements UserInterface, Serializable
{
/**
* @ORM\Column(type=”integer”)
* @ORM\Id
* @ORM\GeneratedValue(strategy=”AUTO”)
*/
private $id;
/**
* @ORM\Column(type=”string”, length=25, unique=true)
*/
private $username;
/**
* @ORM\Column(type=”string”, length=64)
*/
private $password;
/**
* @ORM\Column(type=”string”, length=60, unique=true)
*/
private $email;
/**
* @ORM\Column(name=”is_active”, type=”boolean”)
*/
private $isActive;
public
function __construct()
{
$this->isActive = true;
// may not be needed, see section on salt below
// $this->salt = md5(uniqid(‘’, true));
}
public function getUsername()
{
return $this->username;
}
public function getSalt()
{
// you *may* need a real salt depending on your encoder
// see section on salt below
return null;
}
public function getPassword()
{
return $this->password;
}
public function getRoles()
{
return array(‘ROLE_USER’);
}
public function eraseCredentials()
{
}
/** @see \Serializable::serialize() */
public function serialize()
{
return serialize(array(
$this->id,
$this->username,
$this->password,
// see section on salt below
// $this->salt,
));
}
/** @see \Serializable::unserialize() */
public function unserialize($serialized)
{
list($this->id, $this->username, $this->password,
// see section on salt below
// $this->salt
) = unserialize($serialized);
}}
User sınıfını oluşturduktan sonra veritabanındaki değişiklikleri kayıt altına almak ve veritabanı şemasını güncellemek için aşağıdaki komutları sırasıyla çalıştırın.
=> php bin/console doctrine:migrations:diff
=> php bin/console doctrine:migrations:migrate
src/Migrations dizininde geçmişte yapılan tüm değişiklikleri görebilirsiniz. Veritabanı şemanızı eski sürümlere geri döndürebilirsiniz.