如何在fosuserbundle用户注册中分配角色(使用复选框)?

时间:2015-08-31 12:59:04

标签: php symfony doctrine

我正在使用fosuserbundle进行注册和登录(身份验证)。我想在注册时分配角色(使用复选框)。

这三个将采用复选框ROLE_ADMIN,ROLE_USER,ROLE_SUPPER_ADMIN的形式。

我创建了一个扩展baseUser的User实体。我有RegisterType扩展BaseType。

我想使用fosuserbundle的角色值,如何将fosuserbundle的角色与复选框链接?

我的security.yml在下面给出

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN

providers:
    fos_userbundle:
        id: fos_user.user_provider.username

firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: security.csrf.token_manager 


        logout:      
         path:   /logout
         target:  /login
        anonymous:    true

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: ROLE_USER }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/Services/, role: ROLE_USER }

我现在必须做些什么来实现我的目标?

2 个答案:

答案 0 :(得分:0)

步骤:

  1. 在security.yml(http://symfony.com/doc/current/book/security.html)中添加安全角色。
  2. 创建一个数组,并在内部表单构建器中创建复选框组合。
  3. 在控制器内部,在创建用户实体后使用它: $ userEntity-> setRoles([SELECTEDROLE VAUES IN POST VAR]);
  4. POST VAR中的SELECTEDROLE VAUES ===在注册过程中用户选择的值。

答案 1 :(得分:0)

在注册时分配角色您可以向表单类添加事件订阅者或事件监听器,并使用表单事件“formEvents :: POST_SUBMIT”

More details