Sprawdzanie uprawnień

Facebooktwitterpinterestlinkedinmail
Dotyczy wersji 2021.1.x autor: Adrian Baszak

 
W miarę zwiększania się liczby wdrożonych aplikacji zwiększa się również liczba ról (reprezentowanych przez osoby lub grupy) którymi trzeba zarządzać. Przydatna może być wtedy możliwość sprawdzenia w jednym miejscu wszystkich uprawnień jakie są przypisane do danej osoby lub grupy. W tym artykule przedstawiony zostanie przykładowy obieg, który będzie to umożliwiać i który może być częścią większej aplikacji do zarządzania grupami stworzonej w oparci o WEBCON BPS.

 

Na jednym formularzu wyświetlone zostaną:

  • Podstawowe informacje o użytkowniku, które są przechowywane na liście użytkowników BPS
  • Grupy, do których należy wybrana osoba
  • Osoby, które należą do wybranej grupy
  • Uprawnienia osoby lub grupy na poziomie aplikacji, procesów i powiązań obiegów z typami formularzy.
  • Reguły biznesowe, które wskazują na wybraną osobę lub grupę.
Zrzut ekranu 1. Formularz sprawdzający uprawnienia użytkownika lub grupy

Dla każdego przykładu, pokazany zostanie widok od strony użytkownika oraz zapytanie SQL, które zwraca odpowiednie dane.

 

Wybór osoby lub grupy

Zanim wyświetlone zostaną jakiekolwiek dane, użytkownik musi wybrać osobę lub grupę. Obok  wyświetlone zostaną podstawowe informację o użytkowniku.

Zrzut ekranu 2. Wybór użytkownika lub grupy w celu wyświetlenia informacji o nich

 

Zapytanie SQL zwracające dane użytkownika z listy użytkowników BPS:

 

select COS_BpsID

,COS_DisplayName

,COS_Department

,COS_Email

,COS_JobTitle

,COS_ManagerBpsID

,COS_ManagerDisplayName

from CacheOrganizationStructure

where COS_BpsID = '{formFieldID}'

 

W miejsce '{formFieldID}' należy wstawić wartość z pola wyboru osoby.

Zrzut ekranu 3. Zapytanie SQL zwracające informacje o użytkowniku w WEBCON BPS

Grupy użytkownika

Po wyborze użytkownika możliwe jest wyświetlenie listy wszystkich grup, do których należy.

Zrzut ekranu 4. Wyświetlanie grup do których należy użytkownik

ID grupy zostało skonfigurowane jako odnośnik do startowania nowej instancji tego samego obiegu (jako użytkownik domyślnie podpowiedziana zostanie kliknięta grupa), dzięki czemu można od razu sprawdzić uprawnienia grupy.

Zrzut ekranu 5. Konfiguracja ID grupy jako linku startującego nowy element

 

Zapytanie SQL zwracające wszystkie grupy, do których należy wybrana osoba:

 

select gr.COS_BPSID

,gr.COS_DisplayName

,(case gr.COS_AccountType

when '4' then 'Active Directory'

when '2' then 'BPS' end) as Type

from CacheOrganizationStructure as gr

join CacheOrganizationStructureGroupRelations on  COSGR_GroupID = gr.COS_ID

join CacheOrganizationStructure as u on u.COS_ID = COSGR_UserID

where u.COS_BPSID = '{formFieldID}'

order by 3, 2

Użytkownicy w grupie

Jeśli wybrana została grupa, możemy wyświetlić listę jej użytkowników.

Zrzut ekranu 6. Wyświetlanie użytkowników w grupie
Zrzut ekranu 6. Wyświetlanie użytkowników w grupie

Podobnie jak w przypadku ID grupy, ID użytkownika zostało skonfigurowane jako odnośnik do startowania nowej instancji tego samego obiegu, dzięki czemu można od razu sprawdzić uprawnienia tego użytkownika.

 

Zapytanie SQL zwracające wszystkie osoby należące do wybranej grupy:

 

select u.COS_BpsID

,u.COS_DisplayName

from CacheOrganizationStructure as gr

join CacheOrganizationStructureGroupRelations on  COSGR_GroupID = gr.COS_ID

join CacheOrganizationStructure as u on u.COS_ID = COSGR_UserID

where gr.COS_BPSID = '{formFieldID}'

order by 2

 

 

Uprawnienia na poziomie aplikacje

W kolejnej tabeli możemy wyświetlić listę aplikacji, do których dana grupa posiada uprawnienia:

Zrzut ekranu 7. Wyświetlanie uprawnień dawanych przez grupy

Zapytanie SQL zwracające wszystkie aplikacje, do których osoba lub grupa ma uprawnienia:

 

select CSC_APPID

,APP_Name

,lvl.Name

from WFConfigurationSecurities

join WFApplications on APP_ID = CSC_APPID

join DicConfigurationSecurityLevels as lvl on lvl.TypeID = CSC_LevelID

where CSC_USERGUID = '{formFieldID}'

order by 2

 

W przypadku sprawdzania uprawnień użytkownika należy pamiętać, że ta lista wskaże tylko te uprawnienia, które użytkownik ma nadane bezpośrednio w BPS Designer Studio. Użytkownik może posiadać inne uprawnienia, wynikające z przynależności do grupy. Uprawnienia grupy należy wtedy sprawdzić osobno. Ta uwaga dotyczy również kolejnych przykładów.

 

Uprawnienia na poziomie procesów i powiązania typów formularzy z obiegiem

Informację o dostępnych aplikacjach możemy rozszerzyć o listę uprawniań użytkownika do poszczególnych procesów i obiegów.

Zrzut ekranu 8. Wyświetlanie uprawnień użytkowników w poszczególnych procesach i obiegach

Zapytanie SQL zwracające wszystkie procesy, obiegi i typy formularzy, do których osoba lub grupa ma uprawnienia:

 

select DEF_Name as Process

,'<All>' as Workflow

,'<All>' as FormType

,lvl.Name as [Level]

,isnull(COM_Name, '<All>') as BusinessEnity

from WFSecurities

join WFDefinitions on DEF_ID = SEC_DEFID

join DicSecurityLevels as lvl on lvl.TypeID = SEC_LevelID

left join Companies on COM_ID = SEC_COMID

where SEC_USERGUID = '{formFieldID}'

 

union all

 

select DEF_Name

,WF_Name

,DTYPE_Name

,lvl.Name

,isnull(COM_Name, '<All>') as COM_Name

from DocTypeAssocciations

join WFDocTypes on DTYPE_ID = ASS_DTYPEID

join WorkFlows on WF_ID = ASS_WFID

join WFSecurities on SEC_ASSID = ASS_ID

join WFDefinitions on DEF_ID = DTYPE_DEFID

join DicSecurityLevels as lvl on lvl.TypeID = SEC_LevelID

left join Companies on COM_ID = SEC_COMID

where SEC_USERGUID = '{formFieldID}'

order by 1, 2, 3

 

Wykorzystanie w regułach biznesowych

Jeśli konfigurując aplikacje przyjmiemy konwencję, że role będą reprezentowane przez odpowiadające im reguły biznesowe, możemy wyświetlić wszystkie te reguły. Konfiguracja takiej reguły powinna wyglądać jak na kolejnym zrzucie ekranu. Można ją wykorzystać do przypisania zadania lub w akcji nadającej uprawnienia.

Zrzut ekranu 9. Konfiguracja rol gdy są reprezentowane przez odpowiadające im reguły biznesowe

Dokumentacja reguły powinna opisywać rolę w taki sposób, aby bez znajomości szczegółów konfiguracji można było określić do czego ona służy i w jaki sposób jest używana. Dzięki temu wystarczy wyświetlić listę reguł i ich opis.

Zrzut ekranu 10. Wyświetlanie listy ról w celu sprawdzenia jakie dają uprawnienia
Zrzut ekranu 10. Wyświetlanie listy ról w celu sprawdzenia jakie dają uprawnienia

Zapytanie SQL zwracające reguły biznesowe, w których używana jest dana osoba lub grupa:

 

select users.BRD_ID

,isnull(DEF_Name, '<Global>') as DEF_Name

,usage.BRD_Name

,usage.BRD_Documentation

from WFBusinessRuleDefinitions as users

join WFBusinessRuleDefinitions as usage on usage.BRD_ID = users.BRD_BRDID

left join WFDefinitions on DEF_ID = usage.BRD_DEFID

where dbo.ClearWFElemIDAdv(users.BRD_People) like '%{formFieldID}%'

and users.BRD_ReturnedValueType = 5

and users.BRD_IsLocal = 1

Podsumowanie

Przedstawione raporty i zapytania mogą być od razu wykorzystane, lub mogą być podstawą do tworzenia własnych raportów dotyczących uprawnień – dla przykładu:

  • W środowiskach wielojęzycznych można dodać tłumaczenia nazw aplikacji, obiegów i typów formularzy
  • Można powiązać obieg z obiegiem, w którym można zarządzać członkami grup – np. przez linki do obiegu dodawania użytkownika do grupy. (patrz. https://community.webcon.com/posts/post/managing-of-bps-groups/37)
  • Wyświetlić inne miejsca konfiguracji, w których używana jest dana grupa lub osoba – np. reguły „USER IS ONE OF”.
  • Każde zapytanie można wykorzystać niezależnie w innym procesie.