2
Silverstripe對用戶發佈的可用/管理/頁/ publishall一個網站的所有網頁和發佈所有的代碼是在/cms/code/controllers/CMSMain.php防止發佈所有在silverstripe
的能力我們遇到了一些問題,用戶意外地在生產環境中運行發佈時,只能從其他環境運行發佈 - 我如何禁用publishall功能?
Silverstripe對用戶發佈的可用/管理/頁/ publishall一個網站的所有網頁和發佈所有的代碼是在/cms/code/controllers/CMSMain.php防止發佈所有在silverstripe
的能力我們遇到了一些問題,用戶意外地在生產環境中運行發佈時,只能從其他環境運行發佈 - 我如何禁用publishall功能?
我的第一個解決這個問題的方法是創建一個自定義的CMSPageController.php,其中我將覆蓋publishall,並且只需調用parent :: publishall($ request)就可以檢查我們所處的環境。這種方法的問題是注入自定義類創建問題與編輯頁面。理想情況下,我只能擴展publishall,但像上面提到的Nunser一樣,Silverstripe(令人沮喪地)沒有在該方法中包含擴展鉤子。
我結束了創建自定義路線覆蓋管理/頁/ publishall
所以內部的mysite/_config/routes.yml
'admin/pages/publishall': CustomPublishallController
和mysite的/代碼/控制器/ CustomPublishallController.php
<?php
/**
* Controller for providing silverstripes inbuilt publishall functionality with the ability to
* run in production removed.
*
* @package sitename
* @subpackage mysite
*/
class CustomPublishallController extends Controller {
public function index($request){
$cmsMain = new CMSMain();
if(ENVIRONMENT_CONSTANT != 'prod'){
return $cmsMain->publishall($request);
}
return Security::permissionFailure($this);
}
}
他們是否「不小心」也按下了「確認」按鈕?用戶,對吧?你正在運行什麼版本的ss?由於我沒有看到擴展該功能的任何掛鉤或任何dev dev的檢查,所以除非修改代碼(不要這樣做),否則您可能無法禁用該功能。它確實檢查管理員權限,所以你可以創建一個新的角色,爲其他用戶設置幾乎所有的權限,只是不給他們ADMIN權限,它會沒事的。 – Nunser
問題在於管理員用戶在生產中運行publishall時認爲他們在開發中。 – jamckp