2016-05-12 6 views
2

1つのグループが1つのサイトセクションに限定されている場合、データオブジェクトエントリへのアクセス方法を知っていますか?私が持っている問題は、私は「マーケティング」グループのアクセスを制限することができるということです、彼らが編集し、ページを表示する(と子供-ページ)ことができるしているモデル管理による1ページへのSilverstripeアクセス

Home 
About us 
Products |  <----- Group "Marketing" have an access to this place only. 
     |-> Product group 1 
     |-> Product group 2 

しかし:

は、私のようなセクションを持っていますDataObjectエントリ(リスティングはありません)とそれらのエントリの追加/削除または編集は表示されません。

「すべての管理者アクセス権」を「マーケティング」グループに設定すると、それは機能しますが、同じグループではサイト全体にアクセスできます。 (と私はそれだけで「製品」にそれを持ってしたいのですが、それは子どもたちです。

は誰がこれを整理する方法を知っている?

+2

PermissionProviderをDataObjectに設定し、CMSごとに必要なパーミッションを設定したり、モデルレベルの権限で動的な処理を行うことができます。基本的にあなたの必要性に合っている場合(canView、canEdit、canDelete、canCreate)、モデル→secondlink。 https://docs.silverstripe.org/en/3.3/developer_guides/security/permissions/ https://docs.silverstripe.org/en/3.3/developer_guides/model/permissions/ – munomono

+0

こんにちは、ありがとう、私は忘れてしまった私はSilverstripe 3.1を使っていると言います。 –

+0

Maciej - 'PermissionProvider'はまだ3.1にあります。実際には3.3にあります。https://github.com/silverstripe/silverstripe-framework/blob/3.3/security/PermissionProvider.php – theruss

答えて

3

のDataObjectのパーミッションはデフォルトでは「ADMIN」権限が必要です。私は通常、いYAMLの設定を経由して拡張を適用し、その後

class CanEditExtension extends DataExtension 
{ 
    public function canEdit($member){ 
     return 
      Permission::check('CMS_ACCESS_CMSMain', 'any', $member) 
      || Permission::check('CMS_ACCESS_LeftAndMain', 'any', $member); 
    } 
    public function canView($member){ 
     return 
      Permission::check('CMS_ACCESS_CMSMain', 'any', $member) 
      || Permission::check('CMS_ACCESS_LeftAndMain', 'any', $member); 
    } 

    public function canCreate($member = null){ 
     return 
      Permission::check('CMS_ACCESS_CMSMain', 'any', $member) 
      || Permission::check('CMS_ACCESS_LeftAndMain', 'any', $member); 
    } 

    public function canDelete($member = null){ 
     return 
      Permission::check('CMS_ACCESS_CMSMain', 'any', $member) 
      || Permission::check('CMS_ACCESS_LeftAndMain', 'any', $member); 
    } 
} 

:ちょうど、非管理者によって編集可能でなければなりませんのDataObjectにこのような何かを拡張子を追加

# in mysite/_config/config.yml 
MyDataObject: 
    extensions: 
    - CanEditExtension 

class MyDataObject extends DataObject 
{ 
    private static $extensions = array('CanEditExtension'); 
} 
関連する問題