FosUserBundle Kurulumu

Fos user bundle, symfony projelerinde sıkça kullanılan ek paketlerden biridir. Üye kaydı, giriş çıkış işlemleri ve güvenlik önlemlerini kapsar.İncelemesini sonraki bölümde yapacağız.

Adım 1

Composer yardımıyla fos user bundle'ı projemize dahil edelim.

( Ek paketler bölümünde anlatıldı )

Adım 2

Ek paketimizi proje çekirdeğinde aktifleştirelim.

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new FOS\UserBundle\FOSUserBundle(),
        // ...
    );
}

Adım 3

Kullanıcı sınıfımızı, kendi bundle yapımız altında oluşturalım.

  • Doctrine ORM
<?php
// src/AppBundle/Entity/User.php

namespace AppBundle\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
    }
}
  • MongoDB
<?php
// src/AppBundle/Document/User.php

namespace AppBundle\Document;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;

/**
 * @MongoDB\Document
 */
class User extends BaseUser
{
    /**
     * @MongoDB\Id(strategy="auto")
     */
    protected $id;

    public function __construct()
    {
        parent::__construct();
        // your own logic
    }
}
  • CouchDB
<?php
// src/AppBundle/CouchDocument/User.php

namespace AppBundle\CouchDocument;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ODM\CouchDB\Mapping\Annotations as CouchDB;

/**
 * @CouchDB\Document
 */
class User extends BaseUser
{
    /**
     * @CouchDB\Id
     */
    protected $id;

    public function __construct()
    {
        parent::__construct();
        // your own logic
    }
}

Adım 4

security.yml adlı dosyamızın içerisindeki herşeyi silip aşağıdaki kodları ekliyoruz.

# app/config/security.yml
security:
    encoders:
        FOS\UserBundle\Model\UserInterface: bcrypt

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: security.csrf.token_manager # Use form.csrf_provider instead for Symfony <2.4

            logout:       true
            anonymous:    true

    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 }

Adım 5

config.yml adlı dosyamızın içine aşağıdaki ayar satırlarımızı ekliyoruz.

# app/config/config.yml
fos_user:
    db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
    firewall_name: main
    user_class: AppBundle\Entity\User

Symfony'nin, projemizdeki yönlendirme ayarlarını algılaması için routing.yml adlı dosyamıza aşağıdaki routing ayarlarını ekliyoruz.

# app/config/routing.yml
fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"

Adım 6

Son olarak, fos user bundle kullanıcı sınıfını kullanabilmek için veritabanımızın yapısını güncelliyoruz.

  • Doctrine ORM
php app/console doctrine:schema:update --force
  • MongoDB
php app/console doctrine:mongodb:schema:create --index
  • Propel
php composer.phar require willdurand/propel-typehintable-behavior

Ardından;

php app/console propel:build

İşlem tamamdır!

Fos user bundle girişi artık şuradadır;

 http://app.com/app_dev.php/login

Kayıt olmak için;

http://app.com/app_dev.php/register

İlgili route'ları bir sonraki yazıda inceleyeceğiz.

results matching ""

    No results matching ""