Takenoff Labs

Lotus Notes/Domino に関する Tips や、クラシックの名曲などを紹介します

[Notes/Domino] NotesACL.DeleteRole のおかしな挙動

NotesACL クラスの DeleteRole を実行すると、ロールを削除することができますが、ある条件によっては、違うロールが(見た目上)有効化されてしまうことがあるようです。

【再現手順】

1. ACL でロール [A]、[B]、[C] を作成します。

2. エントリのロール [A]、[B] を有効化します。([C] は有効化しない。)

image

3. NotesACL.DeleteRole("B") を実行します。

Dim ss As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL

Set db = ss.CurrentDatabase
Set acl = db.ACL
Call acl.DeleteRole("B")
Call acl.Save()

4-1. ACL を表示すると、なぜか [C] ロールが有効化されています。

image

4-2. しかし、「グループとロール」ダイアログを表示すると、有効化されているのは [A] ロールだけです。

image

4-3. 以下のコードでエントリのロールを取得しても、[A] ロールのみ返ります。

Dim ss As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL
Dim entry As NotesACLEntry

Set db = ss.CurrentDatabase
Set acl = db.ACL
Set entry = acl.GetEntry("takenoff/takenoff")
Msgbox Join(entry.Roles, ",")

5. じゃあ、ということで、以下のコードでもう [B] ロールを追加すると……

Dim ss As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL

Set db = ss.CurrentDatabase
Set acl = db.ACL
Call acl.AddRole("B")
Call acl.Save()

6. エントリに [B] ロールが復活しました 😯

image


以上のことから、NotesACL.DeleteRole は、個々のエントリのロール情報までは変更していないことが解るかと思います。

これは NotesACL.DeleteRole のバグで、R7.0.3 で修正されているようです。

R7.0.3より低いバージョンでは、DeleteRole の前に全エントリの対象ロールを無効化する処理を入れるしかないですかね……○| ̄|_

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
読み込み中...

トラックバック

トラックバックはありません

コメント

takenoffさん

ちょっと上記の件と異なるんですけど、教えてもらいたい件があります。

Domino Administratorを使って、複数のDBを選択し、ACLの変更(エントリAからBへ)を行った場合、元のエントリAについているRoleが外れてしまいます。

これってどうにかならないものなのでしょうか。
ちなみにAdministratorは7.0.2です。

peiくんこんばんは。
GWフル出社のtakenoffです 😥

R6.0.4で動作を確認してみたけど、ログを見ると、
どーも「名前変更」と称しつつ、エントリの削除→追加という
タコな処理になっているようで、無理っぽいですな。
ロールを残す設定も無いようだし。

本当にユーザーID(or グループ名)が変わるのであれば、
名前変更のシステム管理要求を発行するのがよいと思うけど、
そういうのじゃないんだよね?

そうじゃなければ、スクリプトで書き換えるくらいしか思いつかんなぁ。
そんなに難しい処理でもないから、開発者に頼んで、Catalog DB にでも
機能を追加してもらったら?

Takenoffさん

ありがとうございます。
やはり、無理でしたか。
しかし、追加、削除のコンボだったとは・・・。Notes恐るべし。

開発者は忙しいので、あきらめます。
ありがとうございました。
あと、GWフル出社お疲れ様でした。

※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。





(以下のタグが使えます)
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

For spam filtering purposes, please copy the number 6798 to the field below:

^
×