category

Craft CMS の「エントリを保存」の権限がない場合はドラフト作成のみ #craftcms

2022-12-09

これは Craft CMS Advent Calendar 2022 9日目の記事です。


ワークフロー周りをみたので、色々と権限周りを見直してみているところ。

2022-12-08

Craft CMS のユーザ(グループ)の権限設定にある「エントリを保存」を説明するのが難しい。

Craft CMS の場合はセクションにエントリとしてデータを登録していく。
エントリ自体には有効・無効のステータスがあって、投稿日(公開日)以降で、有効期限(非公開日)以前(or 未設定)で、有効ステータスであれば、エントリ自体は公開される。

ただ、エントリの前段として、draft(ドラフト、下書き)が存在する。
前段と書いたが、管理されるのはセクション>エントリ、の中。

そのため「エントリを保存」の権限を持っていない場合、ドラフトは作成できるが、エントリにはならない。

20221206 051710

作成・編集している画面はエントリであって、それで保存してもエントリとして保存されるのではなく、ドラフトになる。
話がややこしい。

ドラフトはステータスが有効でも一般には公開されない。

ユーザAがドラフトを作成して、ユーザBがそのドラフトをエントリ作成(ここがわかりづらい)して公開される、みたいなこともできる。

20221206 051747

↑「エントリを保存」の権限があるとドラフトの保存ボタン周りに「Create Entry」が出てくる。
(「エントリを保存」とは別に「エントリの作成」があるが、これは Draft を作成する権限も含む)

↓ 「エントリを保存」 の権限がないと「Save」しかない。

20221209 071712


↓公開済みのエントリについて、そのエントリをユーザAは編集はできるけど、あくまで公開中のエントリに対してドラフトを作成して保存(別リビジョン)という形になる。

20221206 051941

なので、元々公開権限がないユーザが間違って公開中のエントリを自由に編集できるという事故にはならない。

この辺の権限周りの考え方はCMSごとに方針が違うだろうし、日本とそれ以外でも考え方自体が色々と違いそう。

権限という意味合いであれば、この「エントリを保存」の権限を付けるかどうかをしっかり分けておけば Craft CMS でちゃんと権限管理はできる。
後はそれに付随して自動でメール通知をするような機能が必要なら、 Workflow プラグインを使ったり、プラグインを作って対応すれば特に問題にはならなそう。