kematjaya/user-bundle


README

  1. 安装
    composer require kematjaya/user-bundle
    
  2. 启用包,添加到config/bundles.php
    Kematjaya\User\KmjUserBundle::class => ['all' => true]
    
  3. 创建config/packages/kmj_user.yml文件
    user:
         route:
             login: kmj_user_login
             login_success: 
                 ## ----- default redirect page ----
                 default: dashboard_index
                 ## ----- if multiple redirect ----
                 roles: 
                     - { role: ROLE_USER, path: homepage }
                     - { role: ROLE_SUPER_USER, path: backend_dashboard }
    
  4. 更新config/packages/security.yml
    security:
         role_hierarchy:
             # kmj_user default rule is (ROLE_SUPER_USER, ROLE_ADMINISTRATOR, ROLE_USER)
             ROLE_ADMINISTRATOR: ROLE_USER
             ROLE_SUPER_USER: ROLE_ADMINISTRATOR
         password_hashers:
             Kematjaya\UserBundle\Entity\KmjUser: auto
         enable_authenticator_manager: true
         providers:
             app_user_provider:
                 entity:
                     class: Kematjaya\UserBundle\Entity\KmjUser
                     property: username
         firewalls:
             main:
                 logout: 
                     path: kmj_user_logout
                 custom_authenticators:
                     - Kematjaya\UserBundle\Security\FormLoginAuthenticator
    
  5. 导入路由,更新config/routes/annotations.yaml文件
    kmj_user:
     resource: '@UserBundle/Resources/config/routing/all.xml'
    
  6. 创建实体
    // src/Entity/MyUser.php
    ..
    use Kematjaya\UserBundle\Entity\DefaultUser;
    ...
    
    class MyUser extends DefaultUser 
    {
         /**
         * @ORM\Column(type="string", length=255, nullable=true)
         */
         private $email;
    
         public function getEmail(): ?string
         {
             return $this->email;
         }
    
         public function setEmail(?string $email): self
         {
             $this->email = $email;
    
             return $this;
         }
    }
    
  7. 更新模式
    php bin/console doctrine:schema:update --force
    
  8. 插入演示用户,然后运行以下命令
    php bin/console doctrine:fixtures:load
    
    然后,使用root和admin进行登录,密码为:admin123
  9. 其他路由
    {{ path('kmj_user_user') }}
    {{ path('kmj_user_profile') }} // for profile user
    {{ path('kmj_user_change_password') }} // for open change password form
    {{ path('kmj_user_logout') }} // for logout 
    

10,密码表单主题:twig: form_themes: ## .... for bootstrap 3 - '@User/form/bootstrap_3_password.html.twig' ## .... for bootstrap 4 - '@User/form/bootstrap_4_password.html.twig'