2013-07-16 22 views
1

這似乎是一個基本需求,但無法找到有關該主題的任何資源。SonataUser - 限制可選組

在User Admin窗體中,我需要根據當前用戶的角色過濾可選組。

比方說,我們應該只能選擇我們被授予所有附加角色的組。

我認爲這裏不需要ACL。

我可以使用選民嗎?
在我看來,像一個普通的需要,有人可以指向我的任何資源?

回答

0

正如我看到瘋狂的急於迴應我的問題,我會給我的卑微的貢獻。

我還沒有能夠使用ACL或選民。

所以,我沒有延長choice

這種類型從security.contextdoctrine服務注入檢索組自定義類型。

該服務有一個函數用於收集有這個小團體的算法:

public function allExistingGroups() 
{ 
    $finalGroupsList = array(); 

    /* Get all existing groups */ 
    $groups = $this->doctrine->getRepository('SonataUserBundle:Group') 
          ->findAll(); 

    foreach ($groups as $group) { 
     $isGranted = true; 
     foreach ($group->getRoles() as $role) { 
      if (!$this->securityContext->isGranted($role)) { 
       $isGranted = false; 
      } 
     } 
     /* User is granted, so he can see the group */ 
     if ($isGranted) { 
      $finalGroupsList[$group->getId()] = $group->getName(); 
     } 
    } 

    return $finalGroupsList; 
} 

現在,用戶將只能看到組,他被授予的所有角色。

肯定應該有一個更漂亮的解決方案,但這對我來說是訣竅。