MovableTypeを使用して、次のような運用フローを実現したいとの要望がありました。
Aさん・Bさんはライターとして、記事の作成・編集が可能ですが、公開はCさんの承認で行います。
ここで問題になったのが、MovableTypeの「ライター」というロールです。
デフォルト設定の「ライター」は他のユーザーが作成した記事を編集することができません。
つまりBさんは、Aさんが作成した記事が編集できないということになります。
そこで「ロールの編集」を見に行くと、「すべての記事の編集」という権限がありました。
ところがこの「すべての記事の編集」という権限が曲者で、これを付与するとすべての記事の編集だけでなく、公開までができてしまいます。
これでは、BさんはAさんの作成した記事が編集できますが、公開はCさんの承認のもと行うというフローが守れなくなってしまいます。
そこで「ロールの編集」で設定できる権限を追加する、簡単なプラグインを書いてみます。
次のコードを「/mt/plugins/EditAllEntriesRole/config.yaml」としてサーバーにアップします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
id: EditAllEntriesRole key: EditAllEntriesRole name: EditAllEntriesRole version: 1.0 description: Can edit all entries. author_name: NatsumiShinya author_link: http:// doc_link: http:// permissions: blog.your_permission: group: auth_pub label: すべての記事の編集(公開不可) order: 450 permitted_action: edit_all_entries: 1 |
「permitted_action」に与えたい権限を、「label」に表示に使用する権限名を書くと、「ロールの編集」から選択することができるようになります。
これで、「Aさん・Bさんはすべての記事を編集できるが、公開はできない」という状態を作ることができました。
「permitted_action」に設定できる値などは、次のページにある参考資料にまとまっているようです。
https://github.com/movabletype/Documentation/wiki/Japanese-plugin-dev-5-4
個人的にはMovableType好きなので、今後も盛り上がっていってほしいものです。