2013年09月25日
アイテムに公開ステータスを追加する(記事のステータスとアイテムのステータスを同期する)
記事やウェブページには、「公開」「下書き」などの公開ステータスがあり、ステータスによって、エンドユーザーが閲覧できるコンテンツか、閲覧できないコンテンツかを制御することができます。
ところが、アイテムには、記事やウェブページのようなステータスがありませんので、例えば、決算情報といった公開できる日が決まっている情報を、公開前に記事として下書き保存しておいた場合、その記事に貼り付けられている PDF ファイル等は、第三者からアクセス可能という状況が生まれます。
それにより、意図せず第三者に未公開情報にアクセスされ、情報漏えいが発生するといった最悪な自体が起こりえます。
次期バージョンの PowerCMS には、これを防ぐための仕組みとして、AssetStatus というプラグインを同梱します。
AssetStatus は PowerCMS 4 より同梱しております。
AssetStatus プラグインについて
AssetStatus プラグインを設置すると、アイテムに「公開」「下書き」などのステータスが指定できるようになります。
ステータスはアイテムのアップロード時に指定できる他、アイテムの編集画面で指定することができます。
また、記事やウェブページのステータスと、それらに貼り付けられたアイテムのステータスを連動して変更することができます。
例えば以下のような状況で、
- 記事のステータスが「公開」
- 記事に貼り付けられたアイテムのステータスが「公開」
記事のステータスを「下書き」に変更すると、アイテムのステータスも記事のステータスに連動して「下書き」に変更されます。
これによって、公開すべきでない記事を非公開にした際や、公開前に記事を下書き保存していた際に、その記事に貼り付けられていたアイテムに、第三者によってアクセスされてしまうということを防ぐことができます。
DynamicMTMLを利用することでプレビュー画面で下書きのアイテムが確認でき、ログイン状態であれば、ステータスが「下書き」のアイテムを管理画面を介せず、直接ファイルを閲覧することも可能です。
AssetStatus プラグインの設定
AssetStatus プラグインには、プラグイン設定はありません。
下記の環境変数が利用可能です。
- AssetStatusRequiresLogin
- 非公開のアイテムを閲覧する際に、ログインが必須かどうかを指定する
- AssetStatusDenyFiles
- ログインしていても閲覧できないファイル名を指定する
- AssetStatusSyncStatus
- 記事やウェブページのステータスと関連アイテムのステータスを同期するかどうかを指定する
- AssetStatusSyncObjects
- 関連アイテムを同期するオブジェクトを指定する
- AssetStatusDefaultStatus
- アイテムをアップロードする際のデフォルトのステータスを指定する
- AssetStatusSyncObjectsIfPublished
- 公開時のみ同期するかどうかを指定する
- AssetStatusShowTagField
- アイテムをアップロードする際にタグの入力フィールドを表示するかどうかを指定する
それぞれの環境変数の初期設定は下記の通りです。
# 非公開のアイテムを閲覧するにはログインが必須
AssetStatusRequiresLogin 1
# ログイン状態に関わらず、.htaccess, .htpassword, .mtview.php は閲覧できないようにする
AssetStatusDenyFiles .htaccess,.htpassword,.mtview.php
# オブジェクトのステータスと関連アイテムのステータスを同期する
AssetStatusSyncStatus 1
# 関連アイテムを同期するオブジェクトとして、記事、ページ、バナーを指定する
AssetStatusSyncObjects entry,page,campaign
# アイテムをアップロードする際のデフォルトステータスは「下書き」にする
AssetStatusDefaultStatus 2
# オブジェクトのステータスを「公開」した時のみ、関連アイテムのステータスを同期する
AssetStatusSyncObjectsIfPublished 0
# アイテムの編集画面にタグの入力フィールドを表示する
AssetStatusShowTagField 0
基本的には初期設定のままご利用いただけると思います。
Apache の設定
AssetStatus プラグインは、ステータスが「下書き」であるアイテムのファイル名の先頭に、「.(ドット)」を追加してファイル名をリネームします。
以下の例にあるように、.htaccess などに、「.(ドット)」から始まるファイル名のアクセスを制限する記述を追加してください。
<Files ~ "^\.">
Deny from all
</Files>
<Files .mtview.php>
Allow from all
</Files>
また、PowerCMS の Professional 版以上のエディションで利用できるステージング転送機能( Copy2Public プラグイン )は、「.(ドット)」から始まるファイル名を転送対象から除外します。
したがって、ステージング転送機能を利用することで、ステータスが「下書き」のアイテムを、誤って公開サーバに転送してしまうということは起こりません。
AssetStatus プラグインで追加されるフィルタ
アイテム一覧のクイックフィルタに「下書きのアイテム」と「公開されているアイテム」が追加されます。
AssetStatus プラグインによって追加されるリストアクション
アイテム一覧で利用できるリストアクションに「公開取り消し」が追加されます。
AssetStatus プラグインよって追加される MT タグ
「type」モディファイアでアイテムの種類を指定する必要があります。 種類は「file」「image」「video」「audio」の 4種類で、複数指定はできません。
MTPublishedAssets
ステータスが「公開」のアイテムを出力するための MT タグです。
<MTPublishedAssets type="file">
<a href="<$MTAssetURL$>"><$MTAssetLabel escape="html"$></a>
</MTPublishedAssets>
MTEntryPublishedAssets
記事のコンテキストで、ステータスが「公開」の関連アイテムを出力するための MT タグです。
<MTEntryPublishedAssets type="file">
<a href="<$MTAssetURL$>"><$MTAssetLabel escape="html"$></a>
</MTEntryPublishedAssets>
MTPagePublishedAssets
ウェブページのコンテキストで、ステータスが「公開」の関連アイテムを出力するための MT タグです。
<MTPagePublishedAssets type="file">
<a href="<$MTAssetURL$>"><$MTAssetLabel escape="html"$></a>
</MTPagePublishedAssets>
コメントを投稿する