2014-03-06 54 views
2

我有需要與下面的默認安全設置來創建(因爲它們將出現在CMS的定製頁類型:如何爲Silverstripe中的頁面類型設置默認安全訪問?

誰可以查看此頁
只有這些人(從列表中選擇)
管理員,內容作者

在數據模型這將涉及CanViewType = OnlyTheseUsers在SiteTree - 和在SiteTree_ViewerGroups兩排,其中SiteTreeID = ID和組ID = 1 & 2分別

有沒有通過框架做到這一點,或者我應該直接操縱數據庫使用OnBeforeWrite?

回答

4

您可以通過使用populateDefaults()功能設置默認CanViewTypeViewerGroups

public function populateDefaults() { 
    $this->CanViewType = 'OnlyTheseUsers'; 
    $this->ViewerGroups()->add(Group::get()->byID(1)); 
    $this->ViewerGroups()->add(Group::get()->byID(2)); 

    parent::populateDefaults(); 
} 

這將增加2個用戶組,並設置可以查看類型「OnlyTheseUsers」。

替代的解決方案是設置canView功能爲僅允許在組1或2成員查看頁面:

public function canView($member = NULL) { 
    $currentUser = Member::currentUser(); 
    if ($currentUser && ($currentUser->inGroup(1) || $currentUser->inGroup(2))) { 
     return true; 
    } 
    return false; 
} 
+0

這是一個很好回退如果它不可能在CMS設置。謝謝。 – BaronGrivet

+0

謝謝!只需要我需要的,除了$ this-> CanViewType ='LoggedInUsers'; –

相關問題