2012-01-23 12 views
5

次のタスクがあります.Alfrescoのコンテンツを削除するすべてのユーザー(管理者を除く)を禁止します。私はそのための許可サービスを使用するんだけど、それは動作しません:Alfrescoすべてのユーザーにコンテンツの削除を禁止する

private void setReadOnly(ScriptNode node) { 
     permissionService.deletePermissions(node.getNodeRef()); 
     permissionService.setPermission(node.getNodeRef(), 
PermissionService.ALL_AUTHORITIES, PermissionService.CONSUMER, true); 
} 

をしかし、私は私のユーザーを追加していた場合(例えば - テンプレートデザイナー)他のグループ場合と比べて、コンテンツをブロックするための新しい権限を追加しますその後、私のユーザーはコンテンツを削除し、新しいコンテンツ(フォルダの場合)や他のものを追加する必要があります... 私の問題を解決する別の方法 -

private void setReadOnly(ScriptNode node) { 
     permissionService.deletePermissions(node.getNodeRef()); 
     permissionService.setInheritParentPermissions(node.getNodeRef(), false); 
} 

しかし、何らかの理由で適切ではありません。どうしたら、すべてのユーザーのコンテンツを削除するのを禁止するのですか?(adminを除く) ありがとうございます。

+0

、そのフィールドが非表示にしますユーザー/グループあなたの質問はあなたの説明のTEMPLATE_DESIGNER部分と矛盾します。 – skuro

答えて

2

permissionDefinitions.xmlを変更して、すべての役割に対して削除権限を削除できませんか。

adminには別の役割があります。そのままにしてください。

UPDATE: ただ1つのフォルダに対してのみ行う場合は、手動でアクセス許可を設定できます。チェックを解除し、グループ&を編集者権限に設定します。コーディネータのみが削除権を持っています。 Docs

削除権がまだ残っている所有者の許可を削除したい場合。所有者を削除するJavascriptを作成するだけです。

+0

いいえ、特定のコンテンツ(1つのフォルダのみ)に対してのみ行う必要があるためです。 – VladislavLysov

+0

私は答えを更新しました、コメントが長すぎました –

+0

私はこれをプログラムで行う必要があります。私が最初の投稿に書いたように、オーナーを削除したり、権限を継承したりすると、luceneの検索はjavascriptからは機能しません。 )。私はこの問題を解決する別の方法が必要です。 – VladislavLysov

2

OKセカンド回答:

NodeServicePolicies.BeforeDeleteNodePolicyを実装して動作を作成します。

この現象は、ユーザーがアイテムを削除しようとするたびに発生します。 だから、あなたはNodeRefを持っています。そこから、それがどのノードであるか、それを削除可能にするかどうかをチェックすることができます。

これを行うための最善の方法はにある:

  • 広告カスタムの側面と行動
  • またはカスタムメタデータのブール値または設定されている何かを持っているカスタムノードタイプを定義し、それを評価しますjavascriptまたはjavascriptをトリガーするルールによって。そして、あなたは*すべての*のユーザーに対して削除を禁止する必要がある、または選択しますので、どのユーザーが、それは

ところで振る舞いを作成する上でジェフポットでこのPDFをチェックオフ/チェックすることはできません:)

+0

はい、私は動作を使用していますが、この方法は私にとってはあまり良くありません。私はこれにパーミッションを使用したいと思います。今私は私のカスタムモデルのアスペクト "systemLocked"を追加し、permissionDefinitionsを追加します。xml – VladislavLysov

+0

??なぜあなたはこれにアクセス許可を使いたいのですか?私は、あなたが求めるもので完全にはっきりしていないことを意味します。あなたの質問を漠然として見てください...あなたが望むものを正しく書き留めてください。ローマには、より多くの方法があります。 –

+0

私はこの問題を解決しました。私はこれのためにブートストラップを使用しています。答えをありがとう。 – VladislavLysov

関連する問題