GAM のアクセス許可は、階層構造にグループ化することで管理しやすくすることができます。
また、アクセス許可は階層構造を使用して定義することで、メンテナンスを簡素化できます。
この階層には子と親のアクセス許可があります (ツリー構造)。子は親の動作を継承し、親に対する変更はすべて子に反映されます。
任意のアクセス許可 (
GeneXus によって生成される自動アクセス許可と
ユーザーによって作成されるアクセス許可) は、子を持つことができます。
アクセス許可は
アプリケーションの範囲内にあるため、そこでアクセス許可の階層が定義されます。
子のアクセス許可を定義するには、以下を行います。
- GAM Backend を実行します。
- WW アプリケーションにアクセスします。
- アプリケーションのアクセス許可を編集します。
- リストで「親」のアクセス許可となるアクセス許可を見つけ、以下の図に示すアイコンをクリックして、その子を定義します。
次に、 [ ADD ] ボタンをクリックし、親のアクセス許可の子となるアクセス許可を選択します。
この場合、子のアクセス許可は、novels_Execute、novels_Updates、novels_Insert になります。
子の既定の
アクセス許可のアクセスタイプは、親と同じになります。そのため、親に「制限付き」の既定のアクセスタイプを指定すると、子にも適用されます。
「親」のアクセス許可が
ロールと関連付けられている場合、この親のすべての子のアクセス許可は、ロールのアクセス許可のリストに拡大されます。
次の例では、「novels_fullcontrol」のアクセス許可を「親」のアクセス許可に追加するとします。
次の図に示すように、「novels_fullcontrol」は、novels_Execute、novels_Update、novels_Insert を持つ親のアクセス許可となる点に注意してください:
「親」のアクセス許可をロールに追加すると、すべての「子」のアクセス許可がロールに展開されます。たとえば、「親」のアクセス許可を「RoleSample」に関連付けると、ロールのアクセス許可は次のようになります。
ロールで、
アクセス許可のアクセスタイプを変更できます。
「親」のアクセスタイプを変更すると、継承が失われていない限り、その変更が子にも反映されます。
次の図は、「親」のアクセス許可のアクセスタイプの変更が子にどのように影響するかを示しています。
継承は、子のアクセスタイプが変更された場合、または継承のチェックボックスに変更が加えられた場合に失われます。
たとえば、上の例では、「novels_insert」のアクセスタイプを変更すると、このアクセス許可は親からの継承を失い、それが継承のチェックボックスに反映されます。
継承を失うと、親のアクセスタイプを変更しても子に反映されなくなります。
注: アクセス許可のグループ化の真の価値は継承にあります。これにより、複数のアクセス許可を管理する必要がなくなり、単一のアクセス許可 (さまざまなアクセス許可を「グループ化」したもの) を管理するだけで済みます。実際、実行時には、親ではなく子のアクセス許可のコードチェックが行われます。これは、複数のアクセス許可をグループ化するために使用される架空のアクセス許可にすぎません。
次の GeneXus コードがあるとします:
Event "Generate Payments"
ProcA.call()
..........
ProcB.call()
............
ProcC.call()
EndEvent
この場合、ProcA、ProcB、および ProcC を実行するためのアクセス許可を単一のアクセス許可にグループ化することができます。そうすることで、これらすべてのアクセス許可を管理する代わりに、単一のアクセス許可を管理するだけでよくなります。
GAM - フル コントロール アクセス許可と継承