Blog

concrete5の権限機能を使いこなす(1)〜あるいは、そもそもなぜ権限機能が必要なのかというだらっとした話

Posted by admin at 8:31 日時 2013/03/25

オープンソースのCMS「concrete5」は、もともとエンタープライズ用途で開発された有償のCMSでしたので、権限周りの機能が充実しています。オープンソースになってからも権限周りの機能は積極的に開発されていて、バージョン5.6でそれまでの権限機能から大幅に拡張され、さらに詳細な設定が可能になりました。この記事では、この最新の権限機能についてご紹介します。いったん寝かせて推敲して、公式サイトに転載しようと思いますので、分かりにくいとかもっとここが詳しく知りたいとか、ご意見があればぜひコメントいただければ嬉しいです。

さて、まず前提ですが…

CMSにおいて権限設定とは何のために必要でしょうか。

権限設定とは、CMSで行うことができることを、ユーザーによって制限するということです。そもそも、concrete5では、各ページのバージョン管理がされており、ページ属性やどのテーマが適用されているのかといった情報まで、全て過去の状態に戻すことができます。そのため、もし何かマズイことをしてしまってももとに戻すことができるわけですから、わざわざできることを制限する必要があるでしょうか。

ある意味では、その通りだ、と思います。個人的には、無理に権限設定をすることはないと思っています。特に、クライアントに制作したサイトを引き渡す際に、管理者権限は絶対渡さない、という人を時々見かけるのですが…何のために?と思います。サイトを崩されたくない。お客さんが全部できてしまうと依頼がなくなる。もしそのような理由であれば全くナンセンスだと思います。ウェブサイトはそのオーナーのものですから、制作をお手伝いしたくらいでオーナーがサイトを自由にする権利を制限するべきではないと思います。

一方では、新しくconcrete5を使ったウェブサイトを手に入れたクライアントが、CMSに慣れていないということは考えられます。誰しも、高機能なCMSのすべての機能を最初から使いこなせるわけではありません。そこで、はじめのうちはできることを制限しておき、徐々に慣れていくに従って柔軟に権限設定を変えていくということが考えられます。これはポジティブな理由で、良いと思います。

しかし、権限設定が本当に必要になるのはそのようなクライアントと制作者の関係ではありません。

ウェブサイトをたくさんの人間が管理する場合は、CMSには権限設定機能が必須です。

とくに企業のコーポレートサイトなどでは、コンテンツの種類によって管理する部署も異なり、責任の度合いも異なります。それでいて、迅速な情報発信も同時に求められます。

昔は、各部署からホームページにアップする情報を集めてきて、ホームページ担当者がコンテンツを入力して、あるいはホームページ作成ソフトを使ってHTMLを作成して、ウェブサーバーにアップする、というフローでもよかったと思います。しかし、もはやウェブサイトは「ホームページ担当者」ひとりが管理するようなものではなく、企業の全ての部署にとって重要なものになっています。コンテンツを持っている部署が直接ウェブサイトにアップする時代です。

そのように複数の人間がウェブサイトを管理する場合、どのコンテンツを誰が編集することができるのかを設定しておくことは、あらかじめ責任の所在を明確にする上で非常に重要です。なぜなら、サイトすべてを変更できる権限を与えられれば、その担当者は大きな権限を恐れてしまうからです。間違いを防ぐということ以上に、各担当者に安心してコンテンツの発信をさせるには、明確に何を行うべきかを、権限設定によって示すことが重要です。また、編集する側だけでなく、

コンテンツを誰に見せるか、という形でも権限設定は役に立ちます。

ユーザーにログインさせてコンテンツを閲覧させる会員制サイトでは、ユーザーのレベルによって表示されるコンテンツを変更したり、ダウンロードできるファイルを制限したりする場合があります。このような設定も権限設定になります。期間限定のコンテンツも同様です。このようにステークホルダーごとにきめ細やかにコンテンツへのアクセスをコントロールすることは、最近特にB2Bのウェブサイトでは必須機能になりつつあります。営業さんが足と電話で得意先への情報提供とフォローを担っていた部分を、ウェブサイトに置き換えていこうという流れです。その企業のビジネスが海外にまたがる場合は、より顕著になりつつありますね。

いまやウェブサイトは、単にアクセスを稼いで、コンバージョンをゲットすればOK、というものではなくなりつつあります。ウェブが企業のビジネスにとって重要なものになればなるほど、コンテンツの発信側も、受け取り側も、多様化していきます。その中心にCMSが果たす役割は重要性が増しているようです。このあたりの話はITPro Expo 2012でお話したスライドでも取り上げています。

concrete5でのページヘの権限設定方法

さて、長々と権限設定の必要性についてご紹介しましたが、もちろん、各ページに目が届く範囲のページ数の少ないサイトや、管理者が数人のサイトでは、詳細な権限設定はわずらわしいだけです。そのため、concrete5のインストール直後は、簡易権限モードになっており、各ページの閲覧と編集を、それぞれどのグループのユーザーが行えるかという、最低限の設定だけが行えるようになっていますが、ここでは簡易権限モードについては紹介しません。concrete5の本来のウェブサイト管理能力を最大限に発揮できる、上級権限モードについてご紹介します。

上級権限モードのサイトでは、各ページの編集ドロップダウンメニューの「権限」のリンクをクリックすると、以下の権限設定ウィンドウが開きます。

権限ウィンドウ

権限を割り当てる

このページの権限をどのように割り当てるかの設定です。選択肢には次の3つがあります。

  • サイトエリア(階層順)…親ページの権限設定を引き継ぎます。階層が一番上の「ホーム」ページでは選べません。
  • ページタイプのデフォルトから…ページタイプのデフォルトの編集画面で設定した権限を引き継ぎます。サイトの階層とは関係なく、ページの種類によって設定したい場合はこれを選びます。
  • 手動で…このページの設定をこのページで行い、他から引き継ぎません。

サイト内のすべてのページにいちいち権限設定を行うのは、手間から言って現実的ではありませんので、concrete5では、親ページの権限設定を子ページが引き継ぐことができるようになっています。サイト内のページをツリー構造で管理している特性と言えるかもしれません。この仕組みにより、ページ数の多いサイトでも、サイト内の他の箇所と権限の設定を変えたい箇所の、一番階層が上位のページのみ権限設定を行えばいいようになっています。

また、ツリー構造で管理するのが必ずしも適しているとは限りません。そのようなとき、ページタイプのデフォルト設定を引き継ぐということもできるようになっています。

サブページ権限

このページの下層に作成されたページの権限がどうなるかの設定です。

  • ページタイプのデフォルトの権限設定を継承する。…このページの下層に作成したページの「権限を割り当てる」の設定が「ページタイプのデフォルトから」になります。
  • このページの権限を継承する。…このページの下層に作成したページの「権限を割り当てる」の設定が「サイトエリア(階層順)」になります。

各権限の設定

「権限を割り当てる」「サブページ権限」の選択肢の下には、具体的にユーザーが行うことができる操作が並んでいます。ウェブページの編集とひとことで言っても、ページ内のコンテンツの編集から、ページのURLやタイトル、メタ属性の編集、ページの移動、削除など、様々な操作がありますが、それらひとつひとつに対して、個別に誰が、いつ、操作できるのかをコントロールすることが可能です。

それぞれの権限をクリックすると、権限割り当てウィンドウが開きます。

権限割り当てウィンドウ

権限割り当てウィンドウでは、この操作に対して誰がアクセスできるのか、また誰がアクセスできないのかを設定できます。上の画像では、「コンテンツの編集」について設定していますので、「管理者」と「編集者」のそれぞれのグループに属するユーザーがこのページを編集できることになります。「編集者」というグループ名はあらかじめ決まっているものではなく、任意にいくつでも作成できます。「運営グループ」とか「広報部」とか、何でも構いません。

また、編集者の方は時計のマークが水色になっていますが、これは時限設定がされていることを示しています。このように、それぞれの権限に対して、誰がアクセスできるのか、またどの期間でアクセスが可能なのかを設定するには、「+新規」ボタンをクリックしてアクセスエンティティの追加ウィンドウを開きます。

アクセスエンティティの追加ウィンドウ

アクセスエンティティを追加ウィンドウ

アクセスエンティティとは、それぞれの権限にアクセスが可能な単位の総称です。アクセスエンティティには、個々のユーザーや、ユーザーが所属するグループ、グループをさらにまとめたグループセット、または複数のグループに同時に所属していることを示すグループの組み合わせ、このページを作成したページ所有者の中から、好きなものを選択できます。

また、この画面でこのアクセスエンティティの有効期限を設定することができます。アクセスが可能な開始日時と終了日時だけでなく、毎日、毎週、毎月といった周期的な設定も可能です。

詳細タブ

権限によっては、詳細タブが表示されることがあります。詳細タブがある権限は、単にどのアクセスエンティティへのアクセスを許可するか、というだけでなく、さらに詳細な設定が可能です。

詳細タブ

たとえば、この画面は「サブページを追加」権限の詳細タブですが、管理者は全てのページタイプの追加が可能ですが、編集者はブログ記事しか追加できないという設定になっています。

ワークフロータブ

ワークフローを設定していれば、権限によってはワークフロータブが表示されます。ワークフローが適用された操作は、たとえアクセス権限があるユーザーでも、操作を完了することはできません。操作は一時的に保留となり、査閲者によるレビューを経て承認・拒否が行われます。ワークフローについては、またどこかで解説を書きます。

ワークフロータブ

設定作業の効率化

企業のコーポレートサイトなど、それなりの規模のウェブサイトを管理する場合、ページ数も多く、管理するユーザーの人数も多くなるため、権限設定作業自体に時間がかかりますし、ミスも起こります。concrete5には、権限設定作業を効率化するためのしくみも用意されています。

ドラッグ&ドロップでコピー可能

コピーボタンとペーストボタンで複数ページに効率的に同じ設定を適用できる

ページ検索画面から、チェックしたページに一括で権限設定

ページ内の各パーツの権限設定

concrete5では、各ページ自体の権限設定だけでなく、さらにページ内のエリア、エリアの中に追加したブロックの単位で権限の設定が可能です。そのため、同じページでもユーザーによって編集できる箇所が異なる、ユーザーによって見えているパーツが異なる、という設定が可能になります。権限設定ウィンドウの使い方自体は同じなので解説は省きます。

concrete5ではページ内のテキストや画像、動画といったコンテンツだけでなく、問い合わせフォームなど様々なサイト内の重要な機能、ナビゲーション、バナーなど、あらゆるパーツを編集モードで追加・移動することができます。そのため、コンテンツの編集だけを許可したいユーザーには、それらのナビゲーションなどのパーツを変更できないように設定してあげる必要があります。

また、閲覧権限を操作することで、特集ページの公開開始・終了期間に合わせて、その期間だけ見える画像ブロックを設置して特集ページへのバナーとする、といった操作も簡単ですので、特にポータルサイトではこういった機能が運営を楽にしてくれることでしょう。

また、パーツごとの権限設定という意味では、スタックを使う方が楽に管理できます。スタックごとに誰が編集できるかを設定できるので、編集ユーザーはヘッダーなどの共通パーツはいじれない、などの設定がより簡易に行うことができるでしょう。

管理画面の制限

フルサイトマップでシステムページを表示すると、通常のページと同様に管理画面の各ページの権限を設定することができます。

管理画面の権限を設定

この設定は非常に注意して行なってください。管理画面のページは表示できるだけでそのページで行う設定の変更が行えるので、絶対に非ログインユーザーや、管理画面の設定を行わせたくないユーザーには権限を与えないように注意してください。逆に言えば、管理画面内に自作した特定のページだけ一般からのアクセスを許し、そこで何らかのアクションを起こさせるということもできるわけです。

コンポーザーを使わせる場合の注意点

権限機能によって、コンポーザーのページへのアクセスを許可することで、ログインユーザーにコンポーザーを使ってコンテンツを作成することを許可することができます。ただし、この時に注意点があります。コンポーザーのページにアクセスすることができても、ファイルマネージャーへのアクセス権がないと、ファイルを挿入したりといった操作ができません。権限が十分にあるかどうかは、実際に設定しているグループのユーザーでログインして試してみる必要があるでしょう。

また、コンポーザーで作成したページを公開するには、公開したい親ページのサブページを追加する権限を持っている必要があります。また、コンポーザーのプレビューはテーマの変更が行えるかどうかをチェックしていますので、テーマの変更権限が無いとプレビューがアクセス拒否でエラーになります。

コンポーザーの各ページタイプごとにだれが追加できるのかどうか、という権限設定を行うのはちょっとややこしいのですが、一応システムページの下書きのサブページ追加権限でコントロールすることができます。お試しください。

おまけ

毎週放送しているUSTREAM番組「週刊concrete5」でも権限設定について紹介しました。

次回はタスク権限、ファイルマネージャー権限、ユーザー権限、ブロックとスタック権限について書きます。


Share this entry