intra-mart Accel Documents プログラミングガイド 第7版 2018-04-01

アクセス権変更

概要

文書のアクセス権を変更する機能について記載します。

文書のアクセス権は「誰が」にあたる「主体」と「何をできるか」にあたる「パーミッション」の対で表現されています。 「主体」や「パーミッション」の詳細については「intra-mart Accel Documents / 仕様書」を参照してください。

サンプルプログラム

最初に、文書(kn:document-01)のアクセス権を取得するサンプルコードを記載します。

// 取得する文書のIDを指定します。
ObjectId documentId = ObjectId.fromIdString("kn:document-01");

// 文書オブジェクトを取得する
KnObject document = session.getObject(documentId, KnFetch.FULL);

// 文書のアクセス権をMapで取得する
Map<UgId, Set<Permission>> acl = document.getAcl();

以上のコードで文書のアクセス権を取得できます。

次に、取得したアクセス権を編集して、ユーザー「hayashi」に対して読み取り権を与えるサンプルコードを記載します。

// ユーザーコードからアクセス権を追加するユーザーのUgIdを生成します。
UgId ugId = KnUgIdUtil.getUserUgId("hayashi");

// 読み取り権にあたるパーミッションセットを作成します。
Set<Permission> readPermissions =
        Collections.unmodifiableSet(new HashSet<Permission>(Arrays.asList(
                KnPermissions.READ_ATTRIBUTES, KnPermissions.READ_ACL,
                KnPermissions.READ_VERSIONS,
                KnPermissions.READ_INHERITED_ACL,
                KnPermissions.READ_CHILDREN, KnPermissions.READ_CONTENTS)));

// hayashiというユーザに読み取り権を付与します。
acl.put(ugId, readPermissions);

// 編集したアクセス権をオブジェクトに反映します。
session.setObjectAcl(documentId, acl);

以上のコードでアクセス権の編集ができました。