fbeen/userbundle

此Bundle在Symfony安全Bundle的基础上添加了完整的用户集成。它允许您注册和管理网站用户,并让用户使用或不需要如Facebook或Google等提供者登录,编辑他们的个人资料,更改或重置他们的密码。

安装: 92

依赖: 0

建议者: 0

安全: 0

星星: 0

关注者: 2

分支: 1

开放问题: 0

类型:symfony-bundle

V1.0.8 2017-09-23 12:41 UTC

This package is not auto-updated.

Last update: 2024-09-15 02:14:11 UTC


README

此Bundle在Symfony安全Bundle的基础上添加了完整的用户集成。它允许您注册和管理网站用户,并让用户使用或不需要如Facebook或Google等提供者登录,编辑他们的个人资料,更改或重置他们的密码。

功能包括

  • 使用Doctrine ORM数据库存储您自己的用户类
  • 准备好Bootstrap的页面和表单
  • 使用传统登录表单或使用OAuth提供者(如Facebook、Google或Twitter)登录
  • 仅使用他们的电子邮件地址和密码登录
  • 注册时验证电子邮件地址或不验证
  • 注册时管理员批准或不批准
  • 注册时发送或不对发送确认电子邮件
  • 显示和编辑个人资料(带或不带密码保护)
  • 更改密码
  • 重置密码
  • 使用您自己的用户实体
  • 使用您自己的表单类型
  • 可配置的密码约束

安装

使用composer

  1. "fbeen/userbundle": "dev-master"添加到您的composer.json项目文件的require部分。
    "require": {
        ...
        "fbeen/userbundle": "dev-master"
    },
  1. 运行composer update

    $ composer update

  2. 将bundle添加到app/AppKernel.php

        $bundles = array(
            ...
            new Fbeen\MailerBundle\FbeenMailerBundle(),
            new Fbeen\UserBundle\FbeenUserBundle(),
        );
  1. 添加路由到app/config/routing.yml
fbeen_user:
    resource: "@FbeenUserBundle/Resources/config/routing.yml"
    prefix:   /
  1. 在您的twig布局中将空{% block fbeen_user %}放置在内容应出现的位置。通常在{% block body %}{% endblock %}标签之间。
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>{% block title %}Welcome!{% endblock %}</title>
        {% block stylesheets %}{% endblock %}
        <link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
    </head>
    <body>
        {% block body %}
            {% block fbeen_user %}{% endblock %}
        {% endblock %}
        {% block javascripts %}{% endblock %}
    </body>
</html>
  1. app/config/config.yml中启用翻译
parameters:
    locale: en

framework:
    translator:      { fallbacks: ["%locale%"] }
  1. 按如下配置app/config/security.yml
security:

    encoders:
        AppBundle\Entity\User:
            algorithm: bcrypt
            cost: 12
            
    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        our_db_provider:
            entity:
                class: AppBundle:User
                property: email

    firewalls:
        # disables authentication for assets and the profiler, adapt it according to your needs
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main:
            anonymous: ~
            pattern:    ^/
            provider: our_db_provider
            form_login:
                login_path: /login
                check_path: /login_check
                csrf_token_generator: security.csrf.token_manager       # FOR SYMFONY 2.7 OR BELOW USE:   csrf_provider: security.csrf.token_manager
            logout:
                path:   /logout
                target: /

    access_control:
        # require ROLE_SUPER_ADMIN for /admin/app/user*
        - { path: ^/admin/app/user, roles: ROLE_SUPER_ADMIN }        
        # require ROLE_ADMIN for /admin*
        - { path: ^/admin, roles: ROLE_ADMIN }
  1. 在您的AppBundle中添加一个用户实体src/AppBundle/Entity/User.php
<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\AdvancedUserInterface;

/**
 * @ORM\Table(name="users")
 * @ORM\Entity
 */
class User implements AdvancedUserInterface, \Serializable
{
    use \Fbeen\UserBundle\Model\UserTrait;
    
    /*
     * Extend your class here when you need
     */
}
  1. 更新您的数据库模式
$ bin/console doctrine:schema:update --force
  1. 创建一个新用户并将其提升为ROLE_SUPER_ADMIN
$ bin/console fbeen:user:create "My Name" "email@example.com" "password"
$ bin/console fbeen:user:promote "My Name" ROLE_SUPER_ADMIN
  1. app/config/config.yml中添加FbeenMailerBundle的最小配置
fbeen_mailer:
    company_name: "php-programmer.nl"
    company_logo: "https://www.php-programmer.nl/images/logo.png"
    mailaddresses:
        noreply:
            email: no-reply@example.com                   # required
            name: example.com                             # optional
        general:
            email: info@example.com                       # required
            name: example.com                             # optional
        admins:
            - {email: 'admin1@gmail.com', name: 'Admin1'} # at least one required, name is optional
            - {email: 'admin2@gmail.com'}

配置

使用默认值的完整配置

fbeen_user:
    user_entity: AppBundle\Entity\User
    form_types:
        change_password: Fbeen\UserBundle\Form\ChangePasswordType
        profile: Fbeen\UserBundle\Form\ProfileType
        register: Fbeen\UserBundle\Form\RegisterType
    password_constraints:
        minlength: 6
        nummeric: 0
        letters: 0
        special: 0
    password_on_profile_edit: false
    register:
        confirm_email: true
        admin_approval: true
    admin:
        create_password: false
    available_roles:
        -
            role: ROLE_USER
            label: Normal user
        -
            role: ROLE_ADMIN
            label: Administrator           
    providers: # optional
        Facebook:
            key: xxxxxxxxxxxxxxx
            secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
            scope: email
            image: "bundles/fbeenuser/images/facebook.png"
        Google:
            key: xxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com
            secret: xxxxxxxxxxxxxxxxxxxxxxxx
            image: "bundles/fbeenuser/images/google.png"
        # more providers
    emails_to_admins:
        approve_new_account:
            template: FbeenUserBundle:Email:approve_new_account.html.twig
        register_confirmation:
            enabled: false
            template: FbeenUserBundle:Email:register_confirmation_admin.html.twig
    emails_to_users:
        confirm_your_mailaddress:
            template: FbeenUserBundle:Email:confirm_your_mailaddress.html.twig
        register_confirmation:
            enabled: true
            template: FbeenUserBundle:Email:register_confirmation_user.html.twig
        new_account_details:
            enabled: true
            template: FbeenUserBundle:Email:new_account_details_user.html.twig

如果您想要以bootstrap样式渲染表单字段

# Twig Configuration
twig:
    debug:            "%kernel.debug%"
    strict_variables: "%kernel.debug%"
    form_themes:
        - 'bootstrap_3_layout.html.twig'
  • 待续