Chcę na podstawie dynamicznych uprawnień ograniczyć możliwości pewnych userów.
Przykład:
Dziś wprowadzam ograniczenie maksymalnie 5 recordów w tabeli X w godzinach 8-20.
Jeśli admin spróbuje dodać więcej niż 5 to program ma mu na to pozwolić, ewentualnie zanotować w audit logu, że tak było.
Jeśli user spróbuje dodać więcej niż 5 to program nie może mu na to pozwolić.
Zamiast limitu liczby recordów, może też być coś innego np brak możliwości edycji rekordu jeśli był już wcześniej edytowany albo admin może robić ile chce duplikatów a zwykły user nie, chyba że dostanie zgodę.
Dodatkowo jest podział na różne firmy. Każda tabela ma identyfikator firmy i każde żądanie do db musi mieć warunek z tym identyfikatorem.
- Nie można użyć unique index ani innych ograniczeń z db bo to jest na stałe a tak nie może być.
- Użycie zwykłego select for update + insert nic nie da, bo ktoś może wysłać 5 żądań na raz do api a postgresql nie zobaczy tego z poziomu transakcji i zapisze 5. W mysql za to nie ma problemu.
- Jak to zrobić?