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 #
| Potrzeba | Powiązanie rekordu | Źródło ograniczenia |
|---|---|---|
| Osoba widzi wyłącznie własne zgłoszenia | pole wskazujące osobę klienta | ID osoby kontrahenta zalogowanej do portalu |
| Pracownicy klienta widzą wspólne zgłoszenia firmy | pole wskazujące kontrahenta | ID 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 #
- Sprawdź, czy każda osoba korzystająca z portalu jest przypisana do właściwego kontrahenta.
- 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.
- W trybie konstruktor otwórz konfigurację strony zestawienia. Przygotuj filtr oparty na właściwym polu relacyjnym. Korzystaj z instrukcji filtrów.
- 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 #

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 #
- Przygotuj kontrahentów A i B, osoby obu kontrahentów oraz po jednym rekordzie przypisanym do każdej firmy.
- Jako osoba firmy A sprawdź, czy widzisz jej rekord i nie widzisz rekordu B.
- Spróbuj otworzyć rekord B bezpośrednim odnośnikiem i wykonać na nim operację. Oczekuj odmowy zgodnej z konfiguracją dostępu do obiektu.
- Powtórz próbę jako osoba firmy B.
- Jeśli ograniczenie jest osobowe, sprawdź dodatkowo dwie osoby tej samej firmy — nie powinny automatycznie widzieć wzajemnych rekordów.
- 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.