package dev.lions.unionflow.server.security;

import jakarta.interceptor.InterceptorBinding;
import java.lang.annotation.*;

/**
 * Marque une méthode ou classe transactionnelle pour que le filtre RLS
 * positionne les variables de session PostgreSQL ({@code app.current_org_id},
 * {@code app.is_super_admin}) dans la même connexion JTA que Hibernate.
 *
 * <p>Doit toujours être combiné avec {@code @Transactional} (ou être dans une
 * méthode appelée depuis un contexte transactionnel existant).
 *
 * <p>Usage :
 * <pre>{@code
 * @RlsEnabled
 * @Transactional
 * public List<Cotisation> findAll() { ... }
 * }</pre>
 */
@Inherited
@InterceptorBinding
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface RlsEnabled {
}
