6.5 Kontrola uprawnień

 

W wielu aplikacjach bardzo istotna jest kontrola uprawnień aktualnie zalogowanego użytkownika do wykonywania operacji sterujących. W systemie zabezpieczeń istnieje uprawnienie Prawo wysyłania sterowań. Użytkownik musi pełnić rolę, w której wspomniane uprawnienie jest aktywne. Jeżeli tak nie będzie, to każde sterowanie przez niego wykonane zakończy się błędnie.

Z punktu widzenia bezpieczeństwa wystarczy odpowiednio sparametryzować system zabezpieczeń. Lepiej jest jednak zatroszczyć się kontrolę uprawnień zanim jeszcze dojdzie do próby wykonania sterowania. Obiekty posiadają dwie właściwości, które mogą być wykorzystane do tego celu: Aktywny i Widoczny. Obie właściwości są typu logicznego. Ustawiając właściwość Aktywny  na false (NIE) blokuje wbudowane funkcje sterujące obiektów, a także reakcje na przyciśnięcie klawiszy myszki. Przy pomocy właściwości Widoczny można całkowicie ukryć niepożądane obiekty.

Właściwa procedura postepowania to zdefiniowanie roli, w której uprawnienie Prawo wysyłania sterowań jest aktywne, a następnie przyłączenie do niej wszystkich użytkowników, którzy mają mieć możliwość wykonywania sterowań. Potem wystarczy użyć wyrażenia wykorzystującego funkcję HasRole we właściwościach Aktywny lub  Widoczny obiektów związanych z operacjami sterującymi.

 

Właściwości podstawowe

 

Aktywny

=HasRole(SuperOperator)

 

Główna zmienna

AlarmLimit

 

Zmienna sterowana

#

Właściwości stanowe, stan podstawowy

 

Tekst

#

 

Powyższy przykład pokazuje fragment parametryzacji obiekt Tekst. Jeżeli zalogowany użytkownik nie będzie pełnił roli SuperOperator, to obiekt będzie wyświetlał wartość nastawy, ale nie pozwoli na jej zmianę.

Ten sam mechanizm można także zastosować w trochę innym schemacie pracy. Załóżmy, że standardowy operator ma możliwość sterowania.  Chcemy jednak, aby niektóre sterowania były dostępne tylko niektórym operatorom. W tym celu tworzymy dodatkową rolę (nie musi ona nawet mieć żadnych aktywnych uprawnień), przydzielamy ją właściwym użytkownikom i przy pomocy funkcji HasRole blokujemy newralgiczne obiekty.