:
- Zopeの管理Interface-に行く>は新しい状態を作成し、カスタマイズができ、これはオプションである(のは「トレーラー」を言わせ
- をportal_workflow代わりに既存の状態...プライベート状態が特定のユーザー/グループの制限を処理するための良いオプションになる可能性があります)
- 特定の状態の匿名ユーザーから "アクセスするコンテンツ情報"以外のすべてのアクセス許可を削除します。
- プッシュ「セキュリティの更新」ボタン」
完了! "Trailer"状態のすべてのコンテンツは検索可能ですが、匿名ユーザーは表示できません。
注:新しい状態を作成する場合は、必要なすべての遷移も必ず追加してください。
編集:
は、残念ながら、私は最近のPloneのバージョンでは、それが使用されるように動作するように上記のプロセスを妨げるportal_catalog(allowedRolesAndUsers)で新しいインデックスがあることを認識していませんでした。上記のプロセスは正しいですが、デフォルトのインデクサーをオーバーライドする必要があります。 最初にcreate a new package with paster "plone"テンプレートを使用します。そして、パッケージのメインレベル(例えばmy.package /私/パッケージ)に追加したファイルはこれでindexers.py
と呼ば:
from zope.interface import Interface
from plone.indexer.decorator import indexer
from AccessControl.PermissionRole import rolesForPermissionOn
from Products.CMFCore.utils import getToolByName
from Products.CMFCore.CatalogTool import _mergedLocalRoles
@indexer(Interface)
def allowedRolesAndUsers(obj):
"""Return a list of roles and users with View permission.
Used by PortalCatalog to filter out items you're not allowed to see.
"""
allowed = {}
for r in rolesForPermissionOn('Access contents information', obj):
allowed[r] = 1
# shortcut roles and only index the most basic system role if the object
# is viewable by either of those
if 'Anonymous' in allowed:
return ['Anonymous']
elif 'Authenticated' in allowed:
return ['Authenticated']
localroles = {}
try:
acl_users = getToolByName(obj, 'acl_users', None)
if acl_users is not None:
localroles = acl_users._getAllLocalRoles(obj)
except AttributeError:
localroles = _mergedLocalRoles(obj)
for user, roles in localroles.items():
for role in roles:
if role in allowed:
allowed['user:' + user] = 1
if 'Owner' in allowed:
del allowed['Owner']
return list(allowed.keys())
し、同じレベルでのファイルこれでoverrides.zcml
追加:
<configure xmlns="http://namespaces.zope.org/zope">
<adapter factory=".indexers.allowedRolesAndUsers" name="allowedRolesAndUsers" />
</configure>
を最後に
製品のツリーは次のようになります。
my.package/
├── my
│ ├── __init__.py
│ └── package
│ ├── configure.zcml
│ ├── overrides.zcml
│ ├── indexers.py
│ ├── __init__.py
│ ├── profiles
│ │ └── default
│ │ └── metadata.xml
│ └── tests.py
├── README.txt
├── setup.cfg
└── setup.py
最後のものは、あなたがあなたのbuildout.cfgで、新しく作成された卵を含める必要があります。
eggs =
my.package
develop =
src/my.package
再構築ビルド。それで全部です。
メニューや検索で「プライベート」コンテンツがリンクされていますか?もしそうなら、匿名ユーザーがこれらのリンクを訪問するとどうなりますか? –
「プライベート」コンテンツは、管理者または割り当てられたユーザーまたはグループにのみ表示されます。匿名ユーザーがリンクを訪問すると、期待どおりにログインページにリダイレクトされます。私の目標は、メニューと検索で表示されるコンテンツを持つ方法を見つけることですが、ページやフォルダを訪れたときにログインするようにリダイレクトします。 –