簡體   English   中英

如何轉移管理員和管理員的SonataAdminBundle

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM