目標
特定の日付が経過した後、コンテンツアクセス権限をオフに設定して、特定のタイプのすべてのノードへのアクセスを遮断する方法に取り組んでいます(現在、アクセスレベルが誰にも表示されないように設定されていないと想定しています) 、ルールが日付範囲で実行されるたびにこれがトリガーされることを望まないため)。ルール+コンテンツアクセスは#drupal IRCチャンネルで提案されましたが、機能するかどうかは完全にはわかりません。
これまでに行ったこと
問題
「ロールによるアクセスの取り消し」のアクションを追加するためにアクセスするとき、アクセスを取り消すコンテンツタイプを設定するオプションがありません。実際、セレクターの唯一のオプションはsite:です。
また、ノード条件を追加しようとしましたが、ノードフィールドを選択する方法もありません。これは、おそらくイベントをトリガーしたもの(つまり、ノードの場合はコンテンツ更新)を操作したいため、および選択したためです。 cron私はサイトにのみアクセスできます:パラメータ。
私の質問
Cronメンテナンスランを介してコンテンツタイプのすべてのノードのコンテンツ権限を変更するようにルールに指示する方法はありますか、またはルール条件を介してトリガーされるカスタムメソッドを記述する必要がありますか? (またはそのことについて完全に別のモジュール)。
命題:
/admin/modules
で「Rules Sheduler」を有効にします。/admin/config/workflow/rules/components
に移動して、コンポーネントを作成しますAction set
Node:Component
またはNode
または必要なものnode_component
またはnode
または必要なものParameter
Revoke access by role
node-component
として設定されます。これは、上記のステップのテーブルで指定したセレクター名ですadmin/config/workflow/rules
に移動して、新しいルールを追加します(新しいルールを追加):After saving new content
Schedule component evaluation
node:created
(または他の日付ベースの条件)1 seconds
)/admin/config/workflow/rules/schedule
)および「最近のログメッセージ」(/admin/reports/dblog
)に表示される識別子(「このタスクを識別するために使用される文字列」)を指定します。トークン/置換パターンを使用できます。node
これは何ですか?
このソリューションはルールをトリガーします後 anewおよび/またはexistingノードが保存されました。ルールはアクションセットを使用してコンポーネントを「スケジュール」します。この場合、アクションはcheckedユーザーロールへのノードアクセスを取り消すことです。コンテンツが新規または編集済みとして追加された後、コンポーネントは、指定されたロールのノードに対するノードアクセスをスケジュールどおりに取り消しますcron runで。新しい記事を+1秒追加すると、次のcronでアクセスできなくなります(表示/編集/削除)>(node:created
+1秒)。
ヒント:
Schedule component evaluation
をアクションとしてコンポーネントに追加することもできます。たとえば、このルールをnode:changed
の日付を使用してトリガーしたい場合、ノードを編集するたびに、アクション「ノードアクセスを取り消す」の日付が前に移動します(例:ノードが変更されます=>ルールは1日でトリガーされます(コンポーネント設定のオフセット)。ノードは明日変更されるため、ルールは明日+1日などにトリガーされます)。
コンポーネントをインポートしてテストできます。
{ "rules_revoke_node_access_component" : {
"LABEL" : "Revoke node access component",
"PLUGIN" : "action set",
"OWNER" : "rules",
"REQUIRES" : [ "content_access_rules" ],
"USES VARIABLES" : { "node_component" : { "label" : "Node:Component", "type" : "node" } },
"ACTION SET" : [
{ "content_access_action_revoke_node_permissions" : {
"node" : [ "node-component" ],
"permissions" : { "value" : [
"view:2",
"view:1",
"view:3",
"view_own:2",
"view_own:1",
"view_own:3",
"update:2",
"update:1",
"update:3",
"update_own:2",
"update_own:1",
"update_own:3",
"delete:2",
"delete:1",
"delete:3",
"delete_own:2",
"delete_own:1",
"delete_own:3"
]
}
}
}
]
}
ルールをインポートしてテストできます。
{ "rules_revoke_node_access_rule" : {
"LABEL" : "Revoke node access rule",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules", "rules_scheduler" ],
"ON" : { "node_insert" : [], "node_update" : [] },
"DO" : [
{ "schedule" : {
"component" : "rules_revoke_node_access_component",
"date" : { "select" : "node:created", "date_offset" : { "value" : 1 } },
"identifier" : "Revoke node access",
"param_node_component" : [ "node" ]
}
}
]
}
}
Cron runによって呼び出されるルールを作成し、変更するすべてのノードをリストし、必要なすべてのノードセットのアクセス許可についてループします。