Artikel ini dirunut berdasarkan Jobeet Tutorial, yang dibuat oleh Fabien Potencier, untuk Symfony 1.4.
Hak akses pengguna
Pada saat authentifikasi bisanya user akan memasukan username dan password, kemudian jika user berhasil masuk maka sistem akan memberikan hak akses berdasarkan status hak akses yang dimiliki oleh user. Di Symfony 2 kita bisa melakukan pengaturan hak akses melalui data dari database atau melalui konfigurasi file. Nah untuk kali ini kita akan menggunakan setting authentifikasi melalui konfigurasi di file. Pertama seting spesifikasi user di file config/security.ymlapp/config/security.yml
# ...
providers:
in_memory:
memory:
users:
admin: { password: adminpass, roles: 'ROLE_ADMIN' }
# ...
====================================
Tetapi kamu juga dapat meletakan data user di dalam tabel user. Untuk itu mari kita buat table user terlebih dahulu:
src/Ibw/JobeetBundle/Resources/config/doctrine/User.orm.yml
Ibw\JobeetBundle\Entity\User:
type: entity
table: user
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
username:
type: string
length: 255
password:
type: string
length: 255
===========================================
Kemudian jalankan perintah berikut untuk menggenerate tablenya.
php app/console doctrine:generate:entities IbwJobeetBundle
Lakukan update schema di aplikasi kita dengan menjalankan perintah berikut:
php app/console doctrine:schema:update --force
Selanjutnya kita perlu menambahkan user interface untuk melakukan authentifikasi di aplikasi kita, buka model User lalu tambahkan kode berikut:
src/Ibw/JobeetBundle/Entity/User.php
namespace Ibw\JobeetBundle\Entity;
use Symfony\Component\Security\Core\User\UserInterface;
use Doctrine\ORM\Mapping as ORM;
/**
* User
*/
class User implements UserInterface
{
/**
* @var integer
*/
private $id;
/**
* @var string
*/
private $username;
/**
* @var string
*/
private $password;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set username
*
* @param string $username
* @return User
*/
public function setUsername($username)
{
$this->username = $username;
}
/**
* Get username
*
* @return string
*/
public function getUsername()
{
return $this->username;
}
/**
* Set password
*
* @param string $password
* @return User
*/
public function setPassword($password)
{
$this->password = $password;
}
/**
* Get password
*
* @return string
*/
public function getPassword()
{
return $this->password;
}
public function getRoles()
{
return array('ROLE_ADMIN');
}
public function getSalt()
{
return null;
}
public function eraseCredentials()
{
}
public function equals(User $user)
{
return $user->getUsername() == $this->getUsername();
}
}
use Symfony\Component\Security\Core\User\UserInterface;
use Doctrine\ORM\Mapping as ORM;
/**
* User
*/
class User implements UserInterface
{
/**
* @var integer
*/
private $id;
/**
* @var string
*/
private $username;
/**
* @var string
*/
private $password;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set username
*
* @param string $username
* @return User
*/
public function setUsername($username)
{
$this->username = $username;
}
/**
* Get username
*
* @return string
*/
public function getUsername()
{
return $this->username;
}
/**
* Set password
*
* @param string $password
* @return User
*/
public function setPassword($password)
{
$this->password = $password;
}
/**
* Get password
*
* @return string
*/
public function getPassword()
{
return $this->password;
}
public function getRoles()
{
return array('ROLE_ADMIN');
}
public function getSalt()
{
return null;
}
public function eraseCredentials()
{
}
public function equals(User $user)
{
return $user->getUsername() == $this->getUsername();
}
}
====================================
Kemudian set User provider ke model User tersebut:
app/config/security.yml
...
providers:
main:
entity: { class: Ibw\JobeetBundle\Entity\User, property: username }
encoders:
Ibw\JobeetBundle\Entity\User: sha512
providers:
main:
entity: { class: Ibw\JobeetBundle\Entity\User, property: username }
encoders:
Ibw\JobeetBundle\Entity\User: sha512
=============================
Kita juga mengeset pengkodean user dengan menggunakan algoritma Sha512 untuk mengecrypt password kita.
No comments:
Post a Comment