Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Group and Content Moderation for Drupal8

53 views

Published on

DrupalMeetup 2018.7.12

Published in: Software
  • Be the first to comment

  • Be the first to like this

Group and Content Moderation for Drupal8

  1. 1. Drupal Meetup GroupとContent Moderation コンテンツマネジメントしたい時に入れるモジュール 2018年7月12日 合同会社ユビキタスライフスタイル研究所 萩原 高行
  2. 2. 会社紹介 • 合同会社ユビキタスライフスタイル研究所 Ubiquitous Lifestyle Laboratory. LLC – 設立:2013年3月28日 – 代表:萩原高行 – 長期ミッション: 誰もが場所にしばられずに協働できる社会の実現 – 事業概要: Internet時代の新しいライフスタイル確立に関わる 研究を行い、その成果に基づいてITサービス、コン サルティング等のサービスを提供する 1
  3. 3. やりたいこと:コンテンツの執筆、編集・承認、発行を部署単位で行いたい • 利用したモジュール – Workflows (core) – Content Moderation (core) • Editorial workflow – 標準添付のcontent moderation – Group (contribution) • group 8.x-1.0-rc2 2
  4. 4. モデル:ユーザーやコンテンツの想定 3 • 部署が2つ。部署A、部署B。 • 従業員の職位は執筆者と編集者。 部署Aには執筆者2名 (memberA1,memberA2)、 編集者2名(managerA1,managerA2)、 部署Bにはそれぞれ1名 (memberB1,managerB1) • 記事(Articleコンテンツタイプ)は、 部署毎に執筆者または編集者がDraftを作 成し、編集者が公開(Publish)、公開終了 (Archive)操作を行えることとする。 • 執筆者、編集者は自部署の記事を公開状 態のまま改定案Draftを作成できる事とする。 • 他部署の執筆者はDraftの内容を見る事が できない。 • 他部署の編集者は公開、公開終了操作を 行えない。 object Drupal Groupの管理範囲 Workflowの管理範囲 組織: GroupType 組織A: Group title = 組織1 Type = 組織 組織B: Group title = 組織B Type = 組織 memberA1: User role = writer memberA2: User role = writer managerA1: User role = editor managerA2: User role = editor memberB1: User role = writer managerB1: User role = editor memberA1: GroupMember Group role = writer User = memberA1 Group = 組織A memberA2: GroupMember Group role = writer User = memberA2 Group = 組織A managerA1: GroupMember Group role = editor User = managerA1 Group = 組織A managerA2: GroupMember Group role = editor User = managerA2 Group = 組織A 記事1: Node Publish = False revision = 1 Author = memberA1 記事1: GroupContent Group = 組織1 Content = 記事1 記事1ドラフト: Editorial Workflow Actor = memberA1 Content = 記事1 state = Draft 記事1: Node Publish = True revision = 2 Author = memberA1 記事1公開: Editorial Workflow Actor = managerA1 Content = 記事1 state = Published 記事1: Node Publish = False revision = 3 Author = memberA2 記事1ドラフト2: Editorial Workflow Actor = memberA2 Content = 記事1 state = Draft memberB1: GroupMember Group role = writer User = memberB1 Group = 組織B managerB1: GroupMember Group role = writer User = managerB1 Group = 組織B Groupモジュールは、参 照、変更権限を拡張する から、組織に属する記事の アクセス権は、通常の Roleによる権限を上書き する 組織2のユーザーの組織1 に属する記事に関するアク セス権は、Group typeの Group RoleのOutsider 権限が適用される。 記事1非公開: Editorial Workflow Actor = managerA1 Content = 記事1 state = Archived 記事1: Node Publish = False revision = 4 (=2) Author = memberA1 Archiveの遷移を選択すると Publishedコンテンツが非公開になる そのコンテンツをもう一度Draftに戻すこと もできるし、任意のDraftを最新リビジョン にしてからPublishすることもできる editor-publish: transitionChart to = publish from = draft role = editor 記事: GroupContentPrivilege View unpublished コンテンツ entities = False View コンテンツ entities = True Group role = Anonymous Content type = 記事 公開すれば誰でも見えるようにする PublishステータスはWorkflowモ ジュールによって管理される
  5. 5. ユーザーの設定 • 6名のユーザーをそれぞれ設定 – Content WorkflowのTransitionの権限はユーザーRoleと連動 4
  6. 6. Workflowの設定 • Content Workflowを有効にすると Editorial workflowが基本ワークフロー • 適用するコンテンツタイプを追加する (ブロックにも適用可能) 5
  7. 7. Editorial workflowの設定 • ユーザーRole(執筆者、編集者)とtransition(遷移)権限を定義する 執筆者はDraftが作れるだけ(workflow設定はこれだけでOK) 6
  8. 8. Group Typeの設定 • Groupを作り、ついでGroup内のRole(権限) (コンテンツアクセス権)を追加する 7
  9. 9. Group管理対象コンテンツとアクセス権の設定 • 記事(コンテンツタイプ)をインストール • Edit anyコンテンツで同僚の原稿を 操作可能に (revisionを作成) • View unpublishedコンテンツで 部署のDraftコンテンツが読める 8
  10. 10. DEMO 9
  11. 11. クラスモデル 10 object Drupal Groupの管理範囲 Workflowの管理範囲 組織: GroupType 組織A: Group title = 組織1 Type = 組織 組織B: Group title = 組織B Type = 組織 memberA1: User role = writer memberA2: User role = writer managerA1: User role = editor managerA2: User role = editor memberB1: User role = writer managerB1: User role = editor memberA1: GroupMember Group role = writer User = memberA1 Group = 組織A memberA2: GroupMember Group role = writer User = memberA2 Group = 組織A managerA1: GroupMember Group role = editor User = managerA1 Group = 組織A managerA2: GroupMember Group role = editor User = managerA2 Group = 組織A 記事1: Node Publish = False revision = 1 Author = memberA1 記事1: GroupContent Group = 組織1 Content = 記事1 記事1ドラフト: Editorial Workflow Actor = memberA1 Content = 記事1 state = Draft 記事1: Node Publish = True revision = 2 Author = memberA1 記事1公開: Editorial Workflow Actor = managerA1 Content = 記事1 state = Published 記事1: Node Publish = False revision = 3 Author = memberA2 記事1ドラフト2: Editorial Workflow Actor = memberA2 Content = 記事1 state = Draft memberB1: GroupMember Group role = writer User = memberB1 Group = 組織B managerB1: GroupMember Group role = writer User = managerB1 Group = 組織B Groupモジュールは、参 照、変更権限を拡張する から、組織に属する記事の アクセス権は、通常の Roleによる権限を上書き する 組織2のユーザーの組織1 に属する記事に関するアク セス権は、Group typeの Group RoleのOutsider 権限が適用される。 記事1非公開: Editorial Workflow Actor = managerA1 Content = 記事1 state = Archived 記事1: Node Publish = False revision = 4 (=2) Author = memberA1 Archiveの遷移を選択すると Publishedコンテンツが非公開になる そのコンテンツをもう一度Draftに戻すこと もできるし、任意のDraftを最新リビジョン にしてからPublishすることもできる editor-publish: transitionChart to = publish from = draft role = editor 記事: GroupContentPrivilege View unpublished コンテンツ entities = False View コンテンツ entities = True Group role = Anonymous Content type = 記事 公開すれば誰でも見えるようにする PublishステータスはWorkflowモ ジュールによって管理される
  12. 12. Groupモジュールの課題 • 現在の権限設定は通常の ユーザーroleとGroup roleを双 方設定する必要がある • 致命的な欠点として、既に公 開されているコンテンツの場 合、他部署の編集者がDraftを Publishできる • Group roleでworkflow遷移権 限が定義できれば、ユーザー roleの設定は不要になる • Groupとworkflowの統合は issue認識されている Content moderation integration: transition permissions and latest version access https://www.drupal.org/projec t/group/issues/2906085 11
  13. 13. 気になる点 • Groupモジュールはコンテンツアクセスの認可を重くする – パフォーマンスチェックはまだやっていない • どのように要件を記述するか? – どうしてもモデルが複雑になるので仕様記述が困難 12 それでも、この組み合わせに価値があると考えます
  14. 14. お問い合わせは HAGI@ULSLAB.COM までお願いします。 13 本資料の扱いは、creative commons 表示 4.0 国際 (CC BY 4.0)とします。ただし、引用コ ンテンツについては、それぞれその条件に従ってください

×