2012-05-28 42 views
0

想知道如何實現新用戶的創建,但指定他的角色。目前,當我創建一個新用戶時,程序自動與ROLE_ADMIN角色關聯。FOSUserBundle - 創建新的用戶指定角色。

任何信息/代碼/示例是非常受歡迎的。

謝謝先進。

+0

你肯定** ** ROLE_ADMIN是默認的角色?這對我來說似乎很奇怪。你是如何創建用戶的? –

+0

我認爲ROLE_ADMIN是默認角色,不確定。我通常會創建一個新用戶的方法是進入'/ register'並填寫表單。然後,檢查symfony調試面板上的身份驗證,並顯示分配的ROLE_ADMIN角色。 –

回答

6

好的。我解決了我的問題。基本上我遵循this指南,並改變了一些方面。

  1. 在我的模型,我添加了領域的角色:protected $roles = array();
  2. 改變了我的表/類型/ RegistrationFormType.php並把下面的控制:

代碼:

$user = new UserAdmin(); 
    $builder->add('roles', 'collection', array(
     'type' => 'choice', 
     'options' => array(
      'choices' => array(
       'nashville' => 'Nashville', 
       'paris'  => 'Paris', 
       'berlin' => 'Berlin', 
       'london' => 'London', 
      ), 
     ), 
)); 

現在,當我打開我的註冊視圖時,它顯示一個下拉列表。在這種情況下,選項有:納什維爾,巴黎,柏林,倫敦。

+2

fosuserbundle的實體用戶已具有實地角色 –

+0

幾乎完美的解決方案 – krachleur

4

這是我使用的代碼:

$admin = new User() ; 
    $admin->setEmail("[email protected]") ; 
    $admin->setUsername("mitke") ; 
    $admin->setPlainPassword("123123123") ; 
    $admin->setEnabled(true) ; 
    $admin->setSuperAdmin(true) ; 

    $user1 = new User() ; 
    $user1->setEmail("[email protected]") ; 
    $user1->setUsername("user1") ; 
    $user1->setPlainPassword("123123123") ; 
    $user1->setEnabled(true) ; 
    $user1->setRoles(array(User::ROLE_DEFAULT)) ; 

也許它可以幫助你,它爲我工作。

問題: 您使用/ register創建的所有用戶是否具有管理員角色?也許FOS決定第一個註冊用戶默認是admin。

+0

我以爲是那樣。但是昨天我試着在清理完數據庫/緩存後運行整個註冊表,並且創建的用戶使用了ROLE_USER角色。我今晚會嘗試使用你的代碼。非常感謝。 –