2015-01-08 155 views
1

在SilverStripe中是否有關於用戶和登錄後可以看到的內容的任何教程,具體取決於他們的角色和權限?SilverStripe訪問者和權限

我希望用戶在登錄後查看更多內容,但不能訪問CMS。

我該怎麼做?

回答

1

有一些關於此主題的詳細教程Silverstripe User Help

感興趣的將是Managing roles and permissions

在設置組權限時,您可以設置用戶是否有權訪問所有CMS,CMS的某些部分或者不具有CMS。

您可以創建無法訪問CMS的用戶組,但可以查看前端的額外頁面。爲此,在創建新組時,在權限選項卡上取消選中所有複選框。

然後,您將需要設置一些只能通過登錄成員訪問的頁面。在CMS中,選擇您只想通過登錄成員查看的頁面。轉到右上角的頁面設置標籤。在此屏幕上,您將看到誰可以查看此頁面?。您可以選擇登錄用戶只有這些人(從列表中選擇)並在輸入字段中選擇用戶組。

您可以通過擴展MemberLoginForm來控制登錄用戶的去向。

首先在mysite/code/CustomLoginForm.php中創建一個CustomLoginForm類。

CustomLoginForm.php

class CustomLoginForm extends MemberLoginForm { 

    public function dologin($data) { 
     if($this->performLogin($data)) { 

      // Check if the logging in member has access to the CMS 
      if(Permission::check('CMS_ACCESS_CMSMain')) { 
       // If they do, send them to the admin page 
       $this->logInUserAndRedirect($data); 
      } 

      // If they don't, redirect them to whatever page you like. 
      // The following redirects the user to the home page 
      return Controller::curr()->redirect(Director::baseURL()); 

     } else { 
      if ($badLoginURL = Session::get('BadLoginURL')) { 
       return Controller::curr()->redirect($badLoginURL); 
      } else { 
       return Controller::curr()->redirectBack(); 
      } 
     }  
    } 

} 

調用userCustomClass功能在你的_mysite/的config.php設置CustomLoginForm爲你的`MemberLoginForm。以下行添加到您的_mysite/的config.php文件

的config.php

Object::useCustomClass('MemberLoginForm', 'CustomLoginForm'); 

您可以自定義這必須通過CMS控制的重定向頁面,甚至爲設置每個用戶組。它只需要一點點的代碼來添加。

+0

我已經是紅色的,但似乎有角色和我想隱藏的部分cms的權限。 – user1406647

+0

這是我搜索的線索 – user1406647

+0

您知道如何刪除此通知:我很抱歉,但您無法訪問CMS的該部分。如果您想以其他人身份登錄,請在下面執行。當我以普通用戶的身份登錄時,我收到了它,不能查看CMS – user1406647