2016-10-26 2 views
2

デフォルトでContentAuthorに付与されていない具体的なPermissionCodeがあります。許可コードEDIT_SITECONFIGについてです(コンテンツの作成者で「設定」の表示と編集が可能です)。
Security > Groups > Content Authors > Permissions>は、管理サイトの構成SilverStripeハードコード許可設定EDIT_SITECONFIG

Site config permission

あなたは、デフォルトでContentAuthorsに付与するには、この権限を強制するにはどうすればよい:

この許可はでrolesに付与することができますか?

+0

どのようにグループを作成していますか?確かに、複数のグループにユーザーを追加することができ、必要な権限を持つグループ内にすべての必要な人員を配置できます。それでは、デフォルトが何であるかは関係ありません。 – Walf

+0

それもうまくいくでしょう。しかし、私はSilverStripeのインストールごとにより自動化されたソリューションを作成しようとしています。したがって、これをモジュールでハードコーディングすることを好みます。 – Faloude

答えて

3

Groupクラスにこの変数を変更するためにrequireDefaultRecordsを呼び出す拡張を追加できます。

個人用サイト/コード/拡張/ CustomGroup.php

class CustomGroup extends DataExtension { 

    public function requireDefaultRecords() { 
     parent::requireDefaultRecords(); 

     $contentAuthorGroup = Group::get()->filter('Code', 'content-authors')->first(); 
     if ($contentAuthorGroup) { 
      Permission::grant($contentAuthorGroup->ID, 'EDIT_SITECONFIG'); 
     } 
    } 
} 

私たちは、config.ymlファイルに私たちのGroup拡張を可能にします。このソリューションで注意すべき

個人用サイト/ _config/config.yml

Group: 
    extensions: 
    - CustomGroup 

ことの一つは、それがdev/buildが呼び出されるたびに設定EDIT_SITECONFIG許可を更新しますです。これは、このアクセス権がCMS経由でオフにされた場合、次回にdev/buildが呼び出されたときにスイッチバックされることを意味します。

代わりに、最初のデータベースビルドでコンテンツ作成者グループを作成することもできます。これにより、EDIT_SITECONFIGが1回だけ設定され、CMSによって上書きされます。

class CustomGroup extends DataExtension { 

    public function requireDefaultRecords() { 

     // Add default author group if no other group exists 
     $allGroups = Group::get(); 
     if (!$allGroups->count()) { 
      $authorGroup = new Group(); 
      $authorGroup->Code = 'content-authors'; 
      $authorGroup->Title = _t('Group.DefaultGroupTitleContentAuthors', 'Content Authors'); 
      $authorGroup->Sort = 1; 
      $authorGroup->write(); 
      Permission::grant($authorGroup->ID, 'CMS_ACCESS_CMSMain'); 
      Permission::grant($authorGroup->ID, 'CMS_ACCESS_AssetAdmin'); 
      Permission::grant($authorGroup->ID, 'CMS_ACCESS_ReportAdmin'); 
      Permission::grant($authorGroup->ID, 'SITETREE_REORGANISE'); 
      Permission::grant($authorGroup->ID, 'EDIT_SITECONFIG'); 
     } 

     parent::requireDefaultRecords(); 
    } 
} 
+0

華麗です。最初の方法は、あなたが記述したのとまったく同じです。 2番目の方法はよかったようですが、基本的にはインストールファイルにそれを含めるだけです。 – Faloude

+1

そうです。 2番目の方法は、サイトのインストール中に最初のデータベースビルドでのみ機能します。 – 3dgoo

+0

最初の「オンとオフ」の切り替え方法については確かですか?私はちょうどそれをテストし、dev/buildごとに 'true'のままになっているようです – Faloude

関連する問題