2013-10-29 68 views
1

我開始whith Symfony2,我想將用戶分組在層次結構類別中,並向他們提供角色。應用程序需要很多類別,其中一些會包含數百個類別(哪些可能也是其他人的父母)。我想把角色交給父母,然後孩子可以繼承角色。 我不知道什麼是最好的方法: - 我可以使用FOSUserBundle的組,但是我找不到父組,因爲FOSUserBundle的組已經在使用ROLES,所以這是完美的。 - 或者我應該從零開始創建一個Category實體,但我不知道如何做到這一點(如何鏈接類別和ROLES),這聽起來像「重新發明輪子」給我。Symfony2組層次

+1

您是否試過[ACL(訪問控制列表)(Symfony食譜)](http://symfony.com/doc/current/cookbook/security/acl.html)? –

回答

0

我認爲ACL是一種好方法,但另一個解決問題的方法是使用選民。 Voter是一個類,負責決定連接的用戶是否有權對給定的對象進行某種操作。 您可以使用nested tree system做一個簡單的層次結構,然後聲明您的選舉器爲here。閱讀這篇文章並瞭解它,這真的很酷。

在我看來,當業務邏輯可能與用戶權限交互時,這是一種非常酷的方式。它爲我工作,這裏是我的項目:

我有很多不同類型的員工(員工,顧問,分包商,客戶),他們每個人都鏈接到人力資源,銷售管理員,經理和對於他們中的一些人來說,任務......無論如何,正如你所想象的那樣,它會讓我們的思想失去意義。

由於同一個類上有幾棵樹,我們無法使用Gedmo嵌套樹,gedmo不允許這樣的事情......所以我們建立了一個UserBoss系統,每次我們想知道是否有人有權顯示或編輯某人,我只需要在整個UserBossManager中檢查UserBoss關係(每當它在某處發生更改時,它都保持最新狀態),並告訴我使用isBoss($ user1,$ user2)函數是user1是user2的老闆(因爲層次結構,很顯然,我們不能直接檢查直接關係,我老闆的老闆也是我的老闆!)。

所以我希望我的反饋能幫助你(或其他讀者):) 祝你好運!