[英]How to divert the SonataAdminBundle for both admin and manager
我想知道基本的想法指南。
我現在由SonataAdminBundle管理實體,並習慣了它。 我想取得進步。
我想讓管理員和用戶通過sonataadminbundle編輯實體
[例如]
我有這樣的表/實體。
Id |User | data
1 |bear | sarmon
2 |dog | meat
3 |monkey| banana
4 |bear | peanuts
5 |dog | corn
當然,我(管理員)可以從SonataAdminBundle的admin_dashboard編輯實體。
但是我想讓用戶“熊”只編輯1和4行。
如果我從頭開始在Controller中進行編輯/更新/列出腳本。 這很容易實現。
但是,我認為這就像無用的工作,因為SonataAdminBundle具有比我從頭開始更好的UI。
那么,有人知道這種想法的合適方法嗎? 還是對用戶和管理員同時使用SonataAdminBundle是個壞主意?
我想讓用戶忍受只看到熊相關的表。
Id |User | data
1 |bear | sarmon
4 |bear | peanuts
起初,我在使用public function configureListFields(ListMapper $listMapper)
掙扎,但是此代碼僅被調用一次。 我找不到正確的答案。
所以我想我需要將這種代碼放在其他地方。
if ($user == bear){
array_push($table,$line);
}
else {
}
同時為用戶和特權用戶使用AdminBundle是完全可以的。 您可以輕松詢問管理員,是否已授予當前登錄用戶編輯第1行或第4行的權限。
例如,您可以使用:
protected function configureFormFields(FormMapper $mapper)
{
/* either identify your custom rows here or via ACL/ROLES */
if (!$this->isGranted('EDIT')) {
// not allowed
}
}
出於安全方面的考慮(並取決於您的用例),請注意,這不會阻止您的非特權用戶顯示/列出這些實體(因為上面的示例僅覆蓋了表單/編輯掩碼)。 當然,您也可以將邏輯添加到這些方法中。
根據您的安全處理程序,您可以使用symfony支持的所有功能(Roles,ACL等)。 請在此處查看如何根據您的需要配置它: https : //sonata-project.org/bundles/admin/3-x/doc/reference/security.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.