あなた自身のエンドユーザー管理システムを使用する能力と SET USER ALIASコマンドに続いて、複数の4Dユーザーアカウントを作成せずに、エンドユーザーのパーミッションを管理する方法を知りたいと思うかもしれません。この機能リリースには、その答えがあります。
4D開発者は、しばしばエンドユーザーを独自のディレクトリシステムで管理する必要があります(例えば、LDAPやSSOを使用して内部開発から外部まで)。一つの解決策は、権利の数だけ4Dユーザーアカウントを作成し、次から次へと切り替えていくことでした。
4D v18 R4では、グループとユーザーの権限を動的に設定することで、より直感的に操作できるようになりました。
最も簡単な方法は、グループのメンバーシップを持たないデフォルトのユーザーアカウントを作成することです。
その後、管理したい権利ごとにグループを作成します。
実行時に、あなたはまだ SET USER ALIASコマンドを使用してユーザー名を設定し、データベース内のどこにでも表示されるようにすることができます。
新しいコマンドSET GROUP ACCESS を使えば、グループメンバーシップを動的に設定することもできます。
なお、この2つのコマンドはサーバー側では使用できません。
以下は、カスタム・ユーザー認証後にリモート・クライアントで実行されるコード・サンプルです。
// Set my own user field as alias
SET USER ALIAS([MyUserTable]Name)
// Set user groups following rights
C_COLLECTION ($userGroups)
$userGroups :=New collection
If(
[MyUserTable]4DWriteProAccess)
$userGroups .push("4D Write Pro")
End if
If ([MyUserTable]4DViewProAccess)
$userGroups .push("4D View Pro")
End if
SET GROUP ACCESS ($userGroups)
必要であれば、現在のユーザーグループのアクセス権を「なし」に設定することもできます。
SET GROUP ACCESS(New collection)
現在のユーザーグループのアクセス権を、ディレクトリファイルに保存されている方法にリセットすることができます。
SET GROUP ACCESS
新しいGet group access コマンドを使用すると、現在のグループ メンバーシップを取得できます。
SET GROUP ACCESS(New collection("4D View Pro"; "4D Write Pro"))
// 与えられたグループアクセスは、すべてディレクトリファイルに保存されたグループアクセ スに影響します。
$collection :=Get group access
// $collection contains ["4D View Pro", "4D Write Pro"]
与えられたグループアクセスは、ユーザー/グループディレクトリに影響を与えません。
今度は、あなたがそれを試してみる番です。ユーザーとグループをダイナミックに管理…思いのまま!