sokil / user-bundle
此包已被废弃,不再维护。未建议替代包。
用户包
0.3.7
2017-07-06 21:13 UTC
Requires
- php: ^5.5 || ^7.0
- sokil/command-bus-bundle: ^0.4.2
Requires (Dev)
- doctrine/doctrine-bundle: ^1.3
- phpunit/phpunit: >=3.7.38 <6.0
- satooshi/php-coveralls: 1.0.*
- sensio/framework-extra-bundle: ^2.8||~3.0,>=3.0.2
- symfony/form: ^2.8||^3.0
- symfony/framework-bundle: ^2.8 || ^3.0
- symfony/serializer: ^2.8|^3.0
- symfony/validator: ^2.8||^3.0
Suggests
- sokil/deploy-bundle: Deploy symfony2 apps
- sokil/frontend-bundle: Required to enable SPA
README
用户属性、组和角色管理。
安装
通过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应用程序,具有使用不同主题的可能性。