sokil/user-bundle

此包已被废弃,不再维护。未建议替代包。

用户包

0.3.7 2017-07-06 21:13 UTC

This package is auto-updated.

Last update: 2023-03-27 22:28:24 UTC


README

用户属性、组和角色管理。

Latest Stable Version Total Downloads

安装

通过composer安装包

composer.phar require sokil/user-bundle

将包添加到AppKernel

<?php

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            # user bundle is a collection of command handlers so we need command bus
            new Sokil\CommandBusBundle\CommandBusBundle(),
            new Sokil\UserBundle\UserBundle(),
        );
    }
}

配置

包声明了一些路由,因此请手动配置它们或将其添加到您的 ./app.config/routing.yml

user:
    resource: "@UserBundle/Resources/config/routing.yml"
    prefix:   /

然后在 ./app/config/security.yml 中为其中一些设置访问控制

security:
    # define encoder
    encoders:
        Sokil\UserBundle\Entity\User: sha512
    
    # add some roles
    role_hierarchy:
        ROLE_USER_VIEWER: [ROLE_USER]
        ROLE_USER_MANAGER: [ROLE_USER_VIEWER]
        ROLE_ADMIN:
          - ROLE_USER_MANAGER
        ROLE_SUPER_ADMIN:
          - ROLE_ADMIN
          - ROLE_ALLOWED_TO_SWITCH
    
    # define provider
    providers:
        user_provider_email:
            id: user.user_provider.email
            
    # configure filewall
    firewalls:
        # disables authentication for assets and the profiler, adapt it according to your needs
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false

        # main zone
        main:
            pattern: ^/
            form_login:
                provider: user_provider_email
                # csrf_provider: form.csrf_provider
                # Your session has timed out, or you have disabled cookies.
                require_previous_session: false
                success_handler: user.authentication_success_handler
                failure_handler: user.authentication_failure_handler
            logout:
                target: /
                success_handler: user.logout_success_handler
            anonymous:    true
            remember_me:
                key: "%secret%"
                lifetime: 604800 # 1 week
                path: /
                name: token
                httponly: true
                
    # define access control
    access_control:
      - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
      - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
      - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }

将一些包配置添加到 app/config/config.yaml

# User
user:
  # add if user allowed to register himself
  registration:
    security:
      firewall: main
      roles:
        - ROLE_CLIENT

创建表

./app/console doctrine:schema:update

用户角色

角色 描述
ROLE_USER_VIEWER 可以查看用户列表和用户档案
ROLE_USER_MANAGER 可以编辑用户

用户属性

基于 EAV模型 的用户属性。属性由表示为类的实体表示,扩展自 UserAttribute 类,值由 UserAttributeValue 实体表示。属性与用户组相关联,因此用户只有与组相关的属性。

身份验证

登录表单

登录表单具有以下表单

<form action="/login_check" method="post">
<input type="hidden" name="_csrf_token">
<input type="text" name="_username">
<input type="password" name="_password">
<input type="checkbox" name="_remember_me">
<button type="submit" class="btn btn-success">Log in</button>
</form>

此表单的输入名称是默认的,可以根据完整默认配置进行配置

登录和注销请求的Ajax响应

有两个事件监听器,它们覆盖了登录请求的响应以处理Ajax请求

user.authentication_success_handler:
    class: Sokil\UserBundle\EventListener\AuthenticationSuccessHandler
    arguments: ['@security.http_utils', {}]

user.authentication_failure_handler:
    class: Sokil\UserBundle\EventListener\AuthenticationFailureHandler
    arguments: ['@http_kernel', '@security.http_utils', {}, "@logger"]

./app/config/security.yml 中配置安全防火墙以使用这些监听器

security:
    firewalls:
        main:
            form_login:
                success_handler: user.authentication_success_handler
                failure_handler: user.authentication_failure_handler

您还可以覆盖注销响应处理程序以处理JSON响应

user.logout_success_handler:
    class: Sokil\UserBundle\EventListener\LogoutSuccessHandler
    arguments: ['@security.http_utils', '/']

您可以在 ./app/config/security.yml 中配置filter以使用此监听器

security:
    firewalls:
        main:
            form_login:
                success_handler: user.logout_success_handler
                target: /

用户界面

早期版本可以在 https://github.com/sokil/UserBundle.js 找到

Backbone/Marionette应用程序,具有使用不同主题的可能性。