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.yaml
fos_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.
Promote jadi admin

Sebelum jadi admin.




Promote Jadi Admin (link)



Setelah jadi admin.


Oh iya, Sonata Admin Bundle dipasang disini.
Ganti Password.


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

Popular posts from this blog

Numpang Kerja Remote dari Bandung Creative Hub

Numpang Kerja Remote dari Bandung Digital Valley

Cara Decompile berkas Dex dan Apk Android