Controlzugriff konfigurieren
- 1. Wählen Sie das Control im Designer aus.
- 2. Öffnen Sie den Show Permissions-Tab in den Properties.
- 3. Konfigurieren Sie die gewünschten Berechtigungen der einzelnen Benutzergruppen, hierbei stehen die folgenden Optionen zur Verfügung:
Allow: Der Benutzergruppe ist die Zugriffsart erlaubt.
Disallow: Der Benutzergruppe ist die Zugriffsart nicht erlaubt.
Inherit: Die Berechtigung der Benutzergruppe leitet sich vom übergeordneten Eltern-Control (Container-Control: View, Content, User-Control, Container, Region oder User-Control-Host) ab.
Spezialfälle
Zugriffsarten einer View
Operate und Observe sind bei einer View standardmäßig erlaubt (Default = Allow). Da die View als Einstiegspunkt in die HMI-Applikation immer das oberste Container-Control ist, steht die Option Inherit nicht zur Verfügung.
Benutzer ist Mitglied in mehreren Benutzergruppen
Ist ein Benutzer Mitglied in mehreren Benutzergruppen, gelten folgende Regeln:
- Ist für mindestens eine Benutzergruppe Allow konfiguriert, ist die Zugriffsart für den Benutzer erlaubt (Allow).
- Ist für mindestens eine Benutzergruppe Disallow und für keine Benutzergruppe Allow konfiguriert, ist die Zugriffsart für den Benutzer nicht erlaubt (Disallow).
- Ist für alle Benutzergruppen Inherit konfiguriert, leitet sich die Berechtigung vom übergeordneten Container-Control ab (Inherit).
Inherit bei weiteren Zugriffsrechten
Neben Operate und Observe kann ein Control weitere Zugriffsrechte (wie zum Beispiel „viewDetails“ beim EventGrid) definieren. Auch hier wird ausgehend vom jeweiligen Control die Rechte-Einstellung der jeweiligen Ebene überprüft. Hat ein Control hier Allow oder Disallow definiert, so hat der Nutzer (wie oben beschrieben) das konfigurierte Recht. Ist hier Inherit definiert, so wird das übergeordnete Eltern-Control nach einer expliziten Einstellung gefragt.
Es kann jedoch auch vorkommen, dass dieses übergeordnete Eltern-Control das Zugriffsrecht nicht kennt. Zum Beispiel sei hier ein fiktives Recht „configure“ besprochen, welches der View nicht bekannt ist. Es sei angenommen, dass ein ControlTypeA existiert, welches „configure“ kennt und defaultValueInternal auf true/Allow gesetzt hat. Auch ControlTypeB kennt „configure“, hat aber defaultValueInternal auf null gesetzt.
Beispiel 1:
- Desktop (TcHmiView) beinhaltet:
- MainContainer (TcHmiContainer) beinhaltet:
- myControlA (ControlTypeA) „configure“ auf Allow. Beinhaltet:
- myControlB (ControlTypeB) „configure“ auf Disallow.
Auf myControlB wirkt Disallow, da die eigene Konfiguration als erstes geprüft wird.
Beispiel 2:
- Desktop (TcHmiView) beinhaltet:
- MainContainer (TcHmiContainer) beinhaltet:
- myControlA (ControlTypeA) „configure“ auf Allow. Beinhaltet:
- myControlB (ControlTypeB) „configure“ auf Inherit.
Auf myControlB wirkt Allow, da die eigene Konfiguration keine Definition hat und das Eltern-Control eine direkte Konfiguration hat.
Beispiel 3:
- Desktop (TcHmiView) beinhaltet:
- MainContainer (TcHmiContainer) beinhaltet:
- myControlA (ControlTypeA) „configure“ auf Inherit. Beinhaltet:
- myControlB (ControlTypeB) „configure“ auf Inherit.
myControlB und das Eltern-Control hat keine eigene Konfiguration und weder TcHmiContainer noch TcHmiView kennen „configure“. Daher wird der der defaultValueInternal des ControlTypeA genutzt, da es in der Eltern-Kind-Beziehung das letzte Control ist, welches „configure“ bekannt ist und einen Wert (true/false bzw. Allow/Disallow) festlegt.