0

こんにちは、

この質問が十分に明確でない場合はお知らせください。できるだけわかりやすくするために最善を尽くします。

データ オブジェクトを使用してエンド ユーザーが生成したオブジェクトにアクセス制御を追加するにはどうすればよいですか?

例: DataObject を拡張するクラスがあります。誰かがバックエンドにログインします。CMS によってデータ オブジェクト用に生成されたフォームに入力します。次に、CMS によってデータベースにレコードが作成されます。

データベースに新しく作成されたレコードにアクセス制御を追加したいと思います。

コード シナリオについては、私の投稿の 1 つを見ることができます: Silverstripe 3 - CMS からコントローラー アクセス セキュリティを実装できません

この質問をする他の唯一の方法は次のとおりです。CMS を介して DataObject 拡張機能によって作成されたレコードのアクセス許可を動的に (またはプログラムで) 作成する方法は?

ご協力ありがとうございます。

更新 - サンプルコード

///>snippet, note it also has a Manager class that extends ModelAdmin which manages this!
class component extends DataObject implements PermissionProvider{
    public static $db = array(
         'Title' => 'Varchar',
         'Description' => 'Text',
         'Status' => "Enum('Hidden, Published', 'Hidden')",
         'Weight' => 'Int'
    );
    
    ///All the regular permission checks (overrides), for the interface goes here, etc...
    ///That is: canView, canDelete, canEdit, canCreate, providePermissions
}

現在、エンドユーザーは、バックエンドから、ModelAdmin を拡張して生成されたマネージャー インターフェイスを使用してコンポーネントを追加できます。エンドユーザーがこれらの追加されたコンポーネントに個々のアクセス許可を追加するにはどうすればよいですか? ありがとう。

更新 2
の例: ModelAdmin を拡張するプロセス データ オブジェクトを追加すると、バックエンドでこれが得られます ModelAdmin 機能を使用して DataObject を処理する

次に、生成された [プロセスの追加] ボタンをクリックすると、次のようになります。 ModelAdmin & DataObject によって生成されたプロセス フォームを追加します。

最後に、誰かがフォームに入力して [作成] ボタンをクリックすると、データがデータベースに保存されます。それは次のようになります。 プロセスの MySQL データを追加しました

ここで、MySQL で作成されたレコードで、そのレコードに詳細なアクセス許可を追加したいと思います。つまり、作成されたすべてのレコードに対して、グループ/個人などを介してアクセスを拒否/許可できるようにしたいのですが
、SilverStripe フレームワークでもそれは可能ですか? ありがとう。

4

1 に答える 1

0

関数 canView、canEdit、canDelete、および/または canCreate を DataObject に実装します。

各関数は、設定した条件 (CMS で定義されている条件だけでなく、任意の条件) に応じて true または false を返します。

チュートリアル サイト のサンプル コードを参照してください

于 2014-11-09T19:56:53.077 に答える