Membuat Symfony User Login Dengan FOSSUserBundle
Install FOSUserBundle

The child node "db_driver" at path "fos_user" must be configured.Abaikan saja error tersebut karena memang belum dikonfigurasi.
Buat User Class
<?php
// src/Entity/User.php
namespace App\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
// your own logic
}
}
Konfigurasi security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
logout: true
anonymous: true
# Easy way to control access for large sections of your site
# Note: Only the *first* access control that matches will be used
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
Konfigurasi FOSSUserBundle
Buat file baru bernama config/packages/fos_user.yamlfos_user:
db_driver: orm # other valid values are 'mongodb' and 'couchdb'
firewall_name: main # dari security.yml
user_class: App\Entity\User
from_email:
address: "yusuf@test.id"
sender_name: "Yusuf"
Konfigurasi Template Engine
Edit file config/packages/framework.yaml.framework:
templating:
engines: ['twig', 'php']
Import FOSUserBundle Routing
Buat file baru bernama config/routes/fos_user.yaml.fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
Setup Database

.env
Setup koneksi database disini.

edit config/packages/doctrine.yaml

Error karena kelupaan PostgreSQL drivernya.
bin/console doctrine:database:create
In AbstractPostgreSQLDriver.php line 79:
An exception occurred in driver: could not find driver
In PDOConnection.php line 31:
could not find driver
In PDOConnection.php line 27:
could not find driver
Solusinya
╭─yoesoff@yoesoff-ThinkPad-X220 ~/Documents/projects/oblog ‹master*›
╰─➤ php -v
PHP 7.2.19-0ubuntu0.18.04.1 (cli) (built: Jun 4 2019 14:48:12) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.19-0ubuntu0.18.04.1, Copyright (c) 1999-2018, by Zend Technologies
╭─yoesoff@yoesoff-ThinkPad-X220 ~/Documents/projects/oblog ‹master*›
╰─➤ sudo apt-get install php7.2-pgsql
Database connected, hanya ada warning kalau database sudah ada sebelumnya didatabase.

Update skema database
php bin/console doctrine:schema:update --force


Hasilnya Halaman Login dan Registrasi
![]() |
Halaman Login FossUserBundle. |
![]() |
Halaman Login FossUserBundle. |
![]() |
Registrasi berhasil. |
Sebelum jadi admin.

Promote Jadi Admin (link)

Setelah jadi admin.
![]() |
Oh iya, Sonata Admin Bundle dipasang disini. |
![]() |
Ganti password |
Nah sekarang halaman /admin milik SonataAdminBundle sudah terlindungi oleh FossUserBundle, Sehabis ini kita akan pasang dulu SonataUserBundle selengkapnya ada disini.
Selanjutnya mari kita bikin fasilitas create blog post dengan menggunakan News Bundle.
Sumber
http://chrishodgsonweb.co.uk/symfony/2018/05/17/symfony4-postgress/
https://vfac.fr/blog/how-install-fosuserbundle-with-symfony-4
https://vfac.fr/blog/how-install-fosuserbundle-with-symfony-4
Comments
Post a Comment