plume-solution/user-bundle

一个用于轻松管理用户的全新组件

安装次数: 1,636

依赖项: 0

建议者: 0

安全性: 0

星级: 1

关注者: 2

分支: 0

开放性问题: 0

类型:symfony-bundle

1.1.1 2021-12-15 16:45 UTC

README

Latest Stable Version Build Status Maintainability Test Coverage Total Downloads License

一个用于轻松管理用户的简单组件

安装

首先,请确保您已安装php 7.4或8.0以及Symfony 4.4或5.x(对于5.x版本的安全问题,内核版本为5.1.5)。

您可以使用composer轻松安装,如下所示

composer require plume-solution/user-bundle

用法

用户实体

创建一个扩展 PlumeSolution\UserBundle\Models\BaseUser 的实体(或使用现有的实体)。

之后,您可以选择一个Trait来为您的用户添加一些基本字段。

一次性Trait

  • EmailAndNicknamePasswordTrait : 支持拥有电子邮件和用户名(称为昵称)的用户
  • EmailPasswordTrait : 用于没有昵称(用户名是电子邮件)的用户登录(您可以为添加未用于登录系统的昵称添加 NicknameTrait)。
  • NicknamePasswordTrait : 用于使用用户名登录且不使用电子邮件的用户。

登录用法,请参阅登录部分。

未来可能还有更多功能 😄

用户操作

对于用户操作,您可以使用 PlumeSolution\UserBundle\Manager\UserManager 服务。

是自动装配的,只需在控制器动作或服务构造函数中注入即可。

注入后,您可以查阅PHP文档以了解用法(非常基础 😄)。

用户登录

此组件提供了一个您可以在应用程序代码中继承的控制器

只需创建一个使用 PlumeSolution\UserBundle\Controllers 的类。

该控制器是可覆盖的,您可以根据需要自定义多个内部动作。

  • __invoke(Request $request) : 此方法是由路由器调用的动作,您必须通过父调用覆盖以使用注释。
  • redirectIfAlreadyLogged() : 如果用户已经完全认证,则用于将用户重定向到路由。
  • getLoginForm() : 用于构建LoginForm,默认情况下,它使用 PlumeSolution\UserBundle\Form\LoginType 并包含登录所需的最小信息。
  • renderTemplate(FormInterface $form) : 用于带有表单的渲染模板。

用户登录配置

使用此示例进行 security.yaml 并根据需要调整

security:
    encoders:
        App\Entity\User:
          algorithm: auto
    # https://symfony.com.cn/doc/current/security.html#where-do-users-come-from-user-providers
    providers:
        users:
            entity:
                # the class of the entity that represents users
                class: 'App\Entity\User'
                # the property to query by - e.g. username, email, etc
                property: 'nickname'
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            anonymous: ~
            form_login:
                login_path: login
                check_path: login
                default_target_path: index
                failure_path: login
                always_use_default_target_path: true
                username_parameter: "login[username]"
                password_parameter: "login[password]"
            remember_me:
                secret:   '%kernel.secret%'
                lifetime: 604800 # 1 week in seconds
                path:     login
                remember_me_parameter: 'login[remember]'

支持

感谢您使用我们的产品! 😄

如果您想通过代码和/或想法进行贡献,请不要犹豫,提出问题或PR!