Bu yazı ile Symfony de kullanıcı yönetimi (User Management) için kullanabileceğiniz çok kullanışlı bir paket olan FOSUserBundle’ın nasıl kurulacağını ve nasıl yönetebileceğinizi göstereceksiniz.
Bu bundle Symfony projelerinde çok kullanılan ek bir pakettir. Kullanıcı girişi ve güvenlik açısından kullanışlı bir yapısı vardır. Birçok uygulamada kullanabilirsiniz. Aynı zamanda kullanıcıları sistemler arasında da rahatça taşıyabilirsiniz. Güvenlik konusunda size çok yardımcı olacaktır.
Çeviri özelliğinin aktif ederek kuruluma başlıyoruz.
# app/config/config.yml framework: translator: { fallbacks: ["%locale%"] }
Kuruluma geçmeden önce daha önce paylaştığım Symfony 3 projesi kurulumu yazımı okumanızı tavsiye ederim.
1. Adım: Konsol ekranında composer kullanarak bundle ı kuruyoruz.
composer require friendsofsymfony/user-bundle "~2.0"
2. Adım: app/AppKernel.php dosyasında bundle aktifleştiriyoruz.
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new FOS\UserBundle\FOSUserBundle(), // ... ); }
3. Adım: Kendi kullanıcı sınıfınızı oluşturmanız gerekiyor. Burada alternatif çözümler çok fazla ben Doctrine ORM User sınıfını tercih ediyorum.
<?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 } }
4. Adım: security.yml dosyasında gerekli yapılandırmaları yapabilirsiniz.
access_control kısmından istediğiniz adresler için güvenlik seviyesi belirleyebilirsiniz.
# 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_token_generator: security.csrf.token_manager # if you are using Symfony < 2.8, use the following config instead: # csrf_provider: form.csrf_provider 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 }
5. Adım: Config.yml dosyasında gerekli ayarlamaları yapıyoruz.
# app/config/config.yml fos_user: db_driver: orm # other valid values are 'mongodb' and 'couchdb' firewall_name: main user_class: AppBundle\Entity\User from_email: address: "%mailer_user%" sender_name: "%mailer_user%"
6. Adım: Routing dosyasını import ediyoruz.
# app/config/routing.yml fos_user: resource: "@FOSUserBundle/Resources/config/routing/all.xml"
7. Adım: Konsole ekranında veri tabanını güncelliyoruz ve kullanıma hazırlıyoruz.
php bin/console doctrine:schema:update --force
app/Resources/FOSUserBundle/views/layout.html.twig yolu ilede FOSUserBundle’ı Override yapabilirsiniz.
Daha fazla bilgi için FOSUserBundle'ın kendi sayfasını ziyaret edebilirsiniz.
Yorumlar
Bu yazı için hiç yorum yok. İlk yorumu yapmak ister misiniz?