Skip to main content
View Categories

Portal — ograniczenie danych do osoby i firmy

Udostępnienie klientowi strony „Moje zgłoszenia” nie sprawia automatycznie, że zobaczy tylko swoje zgłoszenia. Nazwa strony, grupa portalowa i widoczność przycisku nie określają zakresu rekordów. Najpierw przygotuj strony i uprawnienia portalu, a następnie ograniczenia danych.

1. Ustal granicę dostępu #

PotrzebaPowiązanie rekorduŹródło ograniczenia
Osoba widzi wyłącznie własne zgłoszeniapole wskazujące osobę klientaID osoby kontrahenta zalogowanej do portalu
Pracownicy klienta widzą wspólne zgłoszenia firmypole wskazujące kontrahentaID kontrahenta zalogowanego do portalu

Przykład: zgłoszenie ma pole „Klient” powiązane z kontrahentem i pole „Zgłaszający” powiązane z osobą. Ograniczenie po kliencie dopuszcza osoby tej samej firmy; ograniczenie po zgłaszającym dopuszcza konkretną osobę. Ustal świadomie, która zasada ma obowiązywać. Nazwy pól w Twoim wdrożeniu mogą być inne.

2. Przygotuj dane i filtr #

  1. Sprawdź, czy każda osoba korzystająca z portalu jest przypisana do właściwego kontrahenta.
  2. Sprawdź, czy rekordy zestawienia mają właściwe powiązanie z osobą lub kontrahentem. Puste lub błędne powiązania uniemożliwiają poprawne rozdzielenie danych.
  3. W trybie konstruktor otwórz konfigurację strony zestawienia. Przygotuj filtr oparty na właściwym polu relacyjnym. Korzystaj z instrukcji filtrów.
  4. Dodaj stałe ograniczenie tego filtra ze źródłem osoby lub kontrahenta zalogowanego do portalu. Ogólna obsługa ograniczeń jest opisana w artykule Blokady filtrów.

Stałe ograniczenie działa niezależnie od tego, czy kontrolka filtra jest widoczna. Do rozdzielenia danych użyj ograniczenia ukrytego, którego klient nie może zmienić. Zwykła zapamiętana wartość wyszukiwania i filtr edytowany przez klienta nie zastępują tej zasady.

3. Ustaw ograniczenie przez MCP #

Przykładowy formularz konfiguracji stałej blokady filtra w BS4 Core
Przykład formularza blokady z głównego interfejsu. Dla portalu wybierz źródło zalogowanej osoby lub kontrahenta, zamiast pracownika.

Wykorzystaj istniejące komendy bs4_add_page_constraint, bs4_update_page_constraint i bs4_remove_page_constraint. Dodawanie i aktualizacja obsługują teraz dwa portalowe źródła value_source:

  • portal_person — ID zalogowanej osoby klienta;
  • portal_company — ID jej kontrahenta.

Podaj page_id, istniejący filter_id, tytuł i właściwe źródło. Dla rozdzielenia danych wybierz visibility=hidden. Dla źródła kontekstowego pomiń values: wartość jest ustalana podczas wyświetlania strony osobie, a nie podczas konfigurowania przez agenta.

API wymaga strony kartoteki portalowej oraz rzeczywistego powiązania z odpowiednią klasą: osobą lub kontrahentem. Nie wystarczy dowolne pole liczbowe nazwane „Klient”. W portalu nie podawaj pracowniczej group_id ani źródła current_user, które dotyczy pracownika głównego programu.

Najpierw odczytaj schemat komendy oraz możliwości filtra przez bs4_get_filter_capabilities. API obsługuje określone tryby filtrów, a nie dowolne źródła i formuły. Zmiana domyślnie jest podglądem; zapis wymaga dry_run=false i stabilnego operation_id.

4. Sprawdź wszystkie drogi do rekordu #

Ograniczenie zestawienia dotyczy zakresu tego zestawienia. Sprawdź także inne zestawienia, wyszukiwanie, odnośniki do obiektów, kartoteki edycji, eksporty, załączniki i operacje. Bezpieczny formularz powinien sprawdzać uprawnienie do konkretnego obiektu, a nie polegać wyłącznie na tym, że rekord był ukryty na jednej liście.

Portal nie dziedziczy globalnych ograniczeń klasy w taki sam sposób jak interfejs wewnętrzny. Nie zakładaj, że konfiguracja wykonana dla pracowników automatycznie obejmie portal; sprawdź lokalne ograniczenia każdej udostępnianej strony.

5. Próba na dwóch klientach #

  1. Przygotuj kontrahentów A i B, osoby obu kontrahentów oraz po jednym rekordzie przypisanym do każdej firmy.
  2. Jako osoba firmy A sprawdź, czy widzisz jej rekord i nie widzisz rekordu B.
  3. Spróbuj otworzyć rekord B bezpośrednim odnośnikiem i wykonać na nim operację. Oczekuj odmowy zgodnej z konfiguracją dostępu do obiektu.
  4. Powtórz próbę jako osoba firmy B.
  5. Jeśli ograniczenie jest osobowe, sprawdź dodatkowo dwie osoby tej samej firmy — nie powinny automatycznie widzieć wzajemnych rekordów.
  6. Sprawdź tworzenie nowych rekordów: właściwy klient/osoba musi zostać przypisany zgodnie z zasadami wdrożenia i nie może dać się dowolnie podmienić.

Testuj na zwykłych kontach klientów. Dostęp administratora i statyczne bs4_explain_access nie potwierdzają separacji rekordów. Jeżeli portal nie ma jeszcze domeny przypisanej przez BS4, można przygotować konfigurację, ale próba odbiorcza wymaga działającego portalu.

Powiązane: uruchomienie i dostęp użytkowników, reguły szczegółowe.

Leave a Reply