prowler-api
Prowler API patterns: RLS, RBAC, providers, Celery tasks. Trigger: When working in api/ on models/serializers/viewsets/filters/tasks involving tenant isolation (RLS), RBAC, or provider lifecycle.
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
Prowler API patterns: RLS, RBAC, providers, Celery tasks. Trigger: When working in api/ on models/serializers/viewsets/filters/tasks involving tenant isolation (RLS), RBAC, or provider lifecycle.
How to use
Zainstaluj skill w swoim projekcie Prowlera, umieszczając go w katalogu skills/prowler-api. Skill automatycznie się aktywuje podczas tworzenia lub modyfikacji plików w folderze api/ dotyczących modeli, serializerów i widoków.
Przy pracy z izolacją dzierżawców (RLS) zawsze używaj funkcji rls_transaction(tenant_id) w kodzie poza kontekstem ViewSet. Funkcja akceptuje zarówno obiekty UUID, jak i stringi, konwertując je wewnętrznie.
Przed sprawdzeniem uprawnień użytkownika wywołaj get_role(), która zwraca pierwszą rolę użytkownika. Wykorzystaj wynik do implementacji kontroli dostępu opartej na rolach (RBAC).
Przy dekorowaniu funkcji obsługujących cykl życia dostawcy stosuj dekoratory w kolejności: @set_tenant, a następnie @handle_provider_deletion. Kolejność jest krytyczna dla poprawnego działania.
W relacjach wiele-do-wielu (M2M) zawsze używaj jawnych modeli through z polem tenant_id zamiast domyślnego mechanizmu Django. RLS wymaga tej struktury do prawidłowej izolacji danych.
Nigdy nie omijaj RLS poprzez surowe zapytania SQL lub connection.cursor(). Zawsze korzystaj z ORM Djangu z odpowiednim kontekstem bazy danych (default dla standardowych zapytań, replica dla operacji tylko do odczytu).