コンテンツに飛ぶ | ナビゲーションに飛ぶ

パーソナルツール
現在位置: ホーム / Blog / Entry / Plone4.1でのサイト設定画面の各項目と権限の対応

Plone4.1でのサイト設定画面の各項目と権限の対応

最終変更 2012年01月12日 03時10分

サイト管理者(Site Administrator)

皆さんのPloneサイトではユーザー管理を「管理者(Manager)」が行っていませんか?

Plone4.0まではサイト設定画面は管理者にしか表示されなかった為、ユーザー管理についても管理者が担当している事が多いと思いますが、この運用には問題があります。

例えば、ZMI内での作業やアドオンインストール、エラーログの確認については技術者グループに担当をお願いしたいですが、ユーザーの追加や権限付与については、技術者よりも人事により近い立場のグループに担当をお願いした方が効率がよいはずです。 だからといって、人事担当の方を管理者グループに所属させると、ZMIに入れてしまったりアドオンのインストールができてしまうので、それは避けたい事が多いはずです。

問題の根本は、Ploneの「サイト設定」画面に表示されている各設定項目は、運用上複数の担当者グループに分ける事ができますが、「管理者」という一つのロールしか存在しない点にあります。

この問題を解消する為に、Plone4.1からは初期状態で「サイト管理者(SiteAdministrator)」ロールが追加されています。このロールは、ZMI内での作業やアドオンインストールはできませんが、ユーザー管理やカレンダー設定が行えるようになっています。

管理者でログインした場合のサイト設定画面は以下です。(今まで通り全項目が使用可能)

setting4manager.png

サイト管理者でログインした場合のサイト設定画面は以下です。(使用可能な項目が制限されている)

setting4siteadmin.png

特に規模が大きめなサイト運営において、効率良い仕事の分散が出来るので、このロールの活用をおススメします。

権限の調整

初期状態でサイト管理者ロールに付与されている権限で概ね問題ないとは思いますが、組織によっては、ユーザー管理を担当する人事の方が「HTMLフィルタ設定」を変更できてしまう事を避けたい場合もあると思います。

Plone4.1ではサイト設定の各項目に対応する権限が個別に(全てではありませんが)定義されているので ZMIのPloneサイトルート[Security]タブでPermissionの設定をする事で組織にあわせた細かい権限の調整が可能になっています。

Ploneのサイト設定の項目とZMIのPermissionの対応についての調査結果は以下です。

Ploneサイト設定項目名ZMI[Security]タブのPermission
Discussion Manage portal
HTML Filtering Plone Site Setup: Filtering
TinyMCE Visual Editor Plone Site Setup: TinyMCE
Zope Management InterfaceManage portal
Configuration Registry Manage portal
Add-ons Manage portal
Errors Manage portal
Calendar Plone Site Setup: Calendar
Collections Manage portal
Content Rules Content rules: Manage rules
Site Plone Site Setup: Site
Security Plone Site Setup: Security
Types Plone Site Setup: Types
Themes Plone Site Setup: Themes
Navigation Plone Site Setup: Navigation
Markup Plone Site Setup: Markup
Maintenance Manage portal
Mail Plone Site Setup: Mail
Users and Groups Plone Site Setup: Users and Groups
Personal Preferences Set own properties
Search Plone Site Setup: Search
Image Handling Plone Site Setup: Imaging
Editing Plone Site Setup: Editing
Language Plone Site Setup: Language

例えば、サイト管理者にHTMLフィルタ設定を許可しないようにする為には、ZMIにてSite Administratorの[Plone Site Setup: Filtering]権限をOFFにします。

調査の仕方

サイト設定項目の権限についての調査結果は上記のとおりですが、Ploneの他の部分についても疑問に思った際にネット上に情報が無く、自身で調査が必要になる事もあると思います。

今回私が行った調査の流れについて書いておきますので、自身で調査が必要になった際に参考にしていただければと思います。

1) Ploneサイト設定ページのURLからview名が判明する(@@の後ろがview名)

overview-controlpanel

2) view名はzcmlファイルで定義されているので該当zcmlファイルを探す

find [plone-root]/eggs/ -name "*.zcml" | xargs grep overview-controlpanel

以下発見

plone.app.controlpanel-2.1.1-py2.6.egg/plone/app/controlpanel/configure.zcml

3) zcmlファイルを見るとclass名が判明する

<browser:page
	 name="overview-controlpanel"
	 for="Products.CMFPlone.interfaces.IPloneSiteRoot"
	 class=".overview.OverviewControlPanel"
	 permission="plone.app.controlpanel.Overview"
	 />

4) classのソース(plone/app/controlpanel/overview.pyのclass OverviewControlPanel)を見る

__call__メソッドの戻り値がhtmlとして描画されるので、メソッドの実装を見てみるとoverview.ptを返している事がわかる。

template = ViewPageTemplateFile('overview.pt')
...
def __call__(self):
   self.request.set('disable_border', 1)
   return self.template()

5) plone/app/controlpanel/overview.ptを見る

<tal:category tal:repeat="category view/categories">
	
	<h2 tal:content="category/title"
		i18n:translate="">Category</h2>

	<div tal:define="sublists python:view.sublists(category.get('id'))">

		<div tal:repeat="sublist sublists"
			 tal:condition="sublists"
			 style="float:left; margin-right: 1em; width: 29%">

			<ul class="configlets"
				tal:condition="sublist">
				<li tal:repeat="action sublist">

sublistが各設定項目を表現していて、sublistはview.sublistsから取得している事が判明する。

6) viewはOverviewControlPanelのインスタンスなので、再度plone/app/controlpanel/overview.pyのclass OverviewControlPanelを見る。

sublistsメソッドを調べる

def sublists(self, category):
    actions = self.cptool().enumConfiglets(group=category)
    return three_column_list(actions)
    
def cptool(self):
    return getToolByName(aq_inner(self.context), 'portal_controlpanel')

toolのportal_controlpanelを使用していることがわかる

7) toolはZMIで参照が可能なのでZMIでportal_controlpanelを見る。

各項目(Name,Idより判別)のPermissionを見ると必要な権限がわかる。

portal_controlpanel.png

Use the Source, Luke !

上記の調査を実際に行ってみると、結果だけではなく仕組みについても理解が深まったので、コントロールパネルに自身のviewを追加したり、より細かい権限設定を行う事も可能になりました。

「ソースを使え、ルーク!」という事で、やはりソースを追うと色々な可能性が見えてきまので、是非皆さんもソースを調べてみてください。