CMSのポテンシャルを引き出す─MODxで作る商用サイト

第14回 MODxにおけるロールやアクセスポリシー

この記事を読むのに必要な時間:およそ 3 分

はじめに

前回の記事では,MODx上で会員限定のページを作るための基本設定についてお話しましたが,MODxが提供できるのは,なにも会員限定サイトだけではありません。実際には「本当にこれがオープンソースのCMSなの!?」と驚いてしまうほど細かな権限設定が可能ですので,今回は実用的な例を挙げてユーザーや権限についての解説を行っていきます。

ちなみに,これまでの見た目を少しでも解消するため,パッケージマネージャーより「andreas01」というテンプレートをダウンロードし,少しだけカスタマイズしてみました。

図1 現在のフロントエンドページの様子

図1 現在のフロントエンドページの様子

前回の補足

前回の記事では会員限定ページを作成するため,⁠himitsu-ug」というユーザーグループを作成し,リソースグループである「himitsu-rg」との関連付けを行っていましたが,その際のスクリーンショット前回の図2「コンテキスト」が正しく設定されていませんでした。正しいスクリーンショットは次の通りで,フロントエンドページのリソースについてのアクセス制限を設定するため,⁠web」というコンテキストを設定しておく必要があります。

図2 ⁠web」コンテキストを明示してリソースグループを設定

図2 「web」コンテキストを明示してリソースグループを設定

もう一点訂正があります。Loginスニペットをコールする際,情報がキャッシュされてしまうと「ログインしていないのにログインしているように見える」など,いろいろ不都合が起きる可能性があるため,スニペットは

[[!Login? &loginResourceId=`リソースID`]]

のように,キャッシュ禁止の形でコールするようにしてください。

最後に,会員限定ページとフォルダの関係についても補足説明させてください。会員限定ページを作成する際,会員限定コンテンツが格納されたフォルダ全体をリソースグループに所属させたい場合があると思います。

この場合,⁠権限管理」⁠⁠リソースグループ」より,フォルダ自体をドラッグ&ドロップすることで,中身のリソース全てがリソースグループ配下に収まりそうに思えるのですが…… 残念ながらこの場合,フォルダのみがリソースグループの配下に加わってしまうだけですので,面倒ですが,全てのリソースを手動で移動させる必要があるようです。もしくは会員限定コンテンツは,全て別コンテキストに置いてしまうという手を使えば,個々のリソースについて設定を行う必要はありません。

ロールやアクセスポリシーについて

前回の記事で避けていたロールやアクセスポリシーについて説明します。

MODx Revolutionでは,ユーザーにロール(役割)を割り当てることができます。たとえば

  • userAにはパッケージを管理させるための役割を与える
  • userBにはパッケージ管理に加え,ユーザー管理を行うための役割を与える

といった具合です。ロールはグループとは別の概念なので,同グループに所属する複数ユーザーに対し異なるロールを割り当てることもできます。ここで,MODxにおけるロールとは単に「ロール名」「特権レベル」の組み合わせだけであり,ロール自体が具体的な権限を表すものではありません。

……と,なるべくわかりやすい解説を心がけているのですが,ロールやアクセスポリシーについては,だらだらと解説するよりも具体的な設定を見ていくのが一番です。今回のシナリオは次のとおりです。

営業部にuser1~user5までの5人のユーザーが在籍しており,MODxを社内での情報活用ツールとして使用することを考えます。user1~user3はある程度技術的な知識があるためコンテンツだけではなくシステムに関する部分の管理を行ってもらいたいのですが,user4とuser5の技術力はそこそこです。間違った操作でデータを削除されては困りますので,もう少し弱い権限を割り当てたいと思います。

わかりやすいよう,以上の要件をリストにしてまとめておきます。ロールは継承できるので,たとえば「user1は全てのロールの権限を継承する」⁠⁠user3はuser4とuser5の持つ権限を継承できる」⁠というのがポイントです。

表1 実現したい設定内容

ユーザー名グループ名権限ロール特権
レベル
user1sales全て0
user2salesユーザー管理+下位の権限を継承10
user3salesパッケージ管理+下位の権限を継承20
user4salesコンテンツ管理+下位の権限を継承30
user5sales自身のプロフィール管理(あまり意味はない…)40

ロールの作成

現時点では,ロールを設定する目的,意味が理解出来ていないとは思いますが,騙されたと思って「権限管理」⁠⁠ユーザーグループとロールの管理」⁠⁠ロール(役割)」より,以下のロールを作成してみてください。

表2 ロールの作成

名前特権レベル
Super User(デフォルトで存在)0
useradmin-role10
pkgadmin-role20
contenteditor-role30
selfmanage-role40

図3 4つのロールを作成した様子

図3 4つのロールを作成した様子

ロールとは,あくまでも権限の強さを表す数字であり,⁠特権レベルが10であればユーザー管理ができる」⁠レベルが5であればパッケージ管理ができる」といったように,具体的な権限の内容を表すものではありません。あくまでもロールとは,権限の継承のために使用されるもので,たとえば「特権レベルが10であれば,それよりも下位のロールがもつ権限を全てカバーできる」ことを意味します。

著者プロフィール

中満英生(なかみつひでお)

大学時代に出会ったSolarisがきっかけでUNIXの世界へ。その後ホスティングプロバイダ,データセンターで実務経験を積む傍ら,雑誌記事の執筆や技術セミナーの講師を務める。サーバ設定の他,セキュリティに関する著作や技術者エッセイも執筆経験あり。

コメント

コメントの記入