meuhmeuhconcept/fos-user-bundle

MeuhMeuhConcept 的 FosUserBundle 实现

2.3 2024-09-24 21:55 UTC

README

Build Status

MeuhMeuhConcept 的 FosUserBundle 实现

安装

在 composer.json 中添加仓库

{
       "require": {
               "meuhmeuhconcept/fos-user-bundle": "~2.0"",
       },
}

通过 composer

composer require meuhmeuhconcept/fos-user-bundle

安装的 bundle 网页资源位于公开网页目录下

bin/console assets:install

配置

添加 bundle

在 app/AppKernel.php 中,添加以下行

public function registerBundles()
{
    $bundles = [

        // ...

        new MMC\FosUserBundle\MMCFosUserBundle(),
        new FOS\UserBundle\FOSUserBundle(),

        // ...
    ];

    // ...
}

创建自己的用户实体

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use MMC\FosUserBundle\Entity\User as BaseUser;

/**
 * @ORM\Entity
 */
class User extends BaseUser
{
    public function __construct()
    {
        parent::__construct();
        // your own logic
    }
}

添加 fos 用户配置和 twig 布局

# 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


twig:
    globals:
        mmc_fos_user_layout: "FOSUserBundle::layout.html.twig"

如果需要自定义布局,您应使用默认布局

# app/config/config.yml

twig:
    globals:
        mmc_fos_user_layout: "FOSUserBundle:Default:layout.html.twig"

添加 fos 用户安全配置

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

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        mmc_fos_user:
            id: fos_user.user_provider.username_email

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: mmc_fos_user
                csrf_token_generator: security.csrf.token_manager
                default_target_path:     /admin
            logout:
                path:     /logout
                target:   /login
            anonymous:    true
            remember_me:
                secret:   '%secret%'
                lifetime: 604800 # 1 week in seconds
                path:     /

    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 }

添加 fos 用户路由

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

自定义

如果您需要更改注销路径(默认为 '/logout'),则应编辑 twig 全局 'mmc_fos_user_bundle_logout_path'。例如,如果需要 '/admin/logout' 作为注销路径

# app/config/config.yml

twig:
    globals:
        mmc_fos_user_bundle_logout_path: '/admin/logout'

默认情况下,管理员标题前缀在登录页面中是 'MMC'。您可以使用 twig 全局来更改它

# app/config/config.yml

twig:
    globals:
        admin_title_suffix: 'Foo'
        #'AdminMMC' => 'AdminFoo'

并在 security.yml 中更改路径

# app/config/security.yml

    /----

    main:
        logout:
            path:     /admin/logout
            target:   /admin/login
    /----

与 MMC/SonataAdminBundle 一起使用

如果您使用 MMCSonataAdminBudnle bundle 并需要使用用户管理,您可以像这样启用它

# app/config/config.yml
mmc_fos_user:
    admin: ~

默认情况下,管理员位于 sonata.admin.group.administration 下,您可以通过这种方式进行更改

# app/config/config.yml
mmc_fos_user:
    admin:
        group: 'name.of.my.custom.group'
        icon: '<i class="fa fa-user"></i>'
        nav_top: ~

如果您在 sonata_admin.dashboard.groups 上覆盖了配置,则前面的配置将无效,因为它将被覆盖。

您应在项目列表中添加服务 ID mmc_fos_user_bundle.sonata_admin.user

# app/config/config.yml
sonata_admin:
    dashboard:
        groups:
            sonata.admin.group.admin:
                items:
                    - mmc_fos_user_bundle.sonata_admin.user

不要忘记授予管理员用户访问权限,角色为 ROLE_MMC_FOS_USER_BUNDLE_SONATA_ADMIN_USER_ALL

创建自定义块

如果您需要添加新的自定义块,则应