dyatlovk/usersbundle

Symfony 用户包

安装次数: 2,167

依赖项: 0

建议者: 0

安全性: 0

星标: 0

分支: 0

类型:symfony-bundle

v0.3.2 2021-03-22 08:14 UTC

This package is auto-updated.

Last update: 2024-09-22 15:46:32 UTC


README

Symfony 4+ 的用户管理系统

功能

  • 注册
  • 通过电子邮件认证
  • 记住我
  • 密码重置
  • 控制台命令(激活、创建、提升等)
  • 独立单元测试(无需 symfony 框架)

pipeline status coverage report

快速开始

使用 Composer 安装包

composer requre dyatlovk/usersbundle

启用包

<?php
// config/bundles.php

return [
        // ...
        new Dyatlov\UsersBundle\DyatlovUserBundle(),
        // ...
    ];

创建用户实体类

<?php
// App/Entity/User.php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Dyatlov\UsersBundle\Model\User as BaseUser;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 * Class User
 *
 * @UniqueEntity(fields="email", message="Email already taken")
 * @ORM\Entity(repositoryClass="App\Repository\UserRepository")
 * @ORM\Table(name="`user`")
 */
class User extends BaseUser
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
}

配置应用配置

# config/security.yml

security:
    encoders:
        Dyatlov\UsersBundle\Model\UserInterface:
            algorithm: bcrypt

    providers:
        in_memory: { memory: ~ }
        user_provider:
            entity:
                class: App\Entity\User
                property: email
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            anonymous: true
            provider: user_provider
            user_checker: dyatlov_users.checker
            logout:
                path: dyatlov.users.logout
                target: app.index
            form_login:
                login_path: dyatlov.users.login
                check_path: dyatlov.users.login
                username_parameter: login_form[email]
                password_parameter: login_form[password]
            remember_me:
                secret: '%kernel.secret%'
                lifetime: 604800 # 1 week in seconds
                path: /
                secure: true
                always_remember_me: false
                remember_me_parameter: login_form[rememberme]

    access_control:
         - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }

配置包

# config/framework.yml

dyatlov_users:
    user_class: 'App\Entity\User'

导入路由

#config/routes/users.yml

users:
    resource: '@DyatlovUsersBundle/Resources/config/routing/'
    type: directory

更新数据库模式

bin/console doctrine:schema:update --force