Расширить методы EntityManager - PullRequest
0 голосов
/ 06 апреля 2020

В настоящее время доступ к нашим ресурсам осуществляется на основе c персон. Admin может обращаться к объектам кластера (группы JPA). Сотрудник может получить доступ к другому кластеру сущностей JPA. Список JPA сущностей для сопоставления персонажа доступен в нашем приложении. Во время событий JPA @PrePersist, @PreUpdate, @PreRemove и @PostLoad мы проверяем, имеет ли вошедший в систему пользователь роль, необходимую для выполнения этого действия.

Теперь нам нужен контроль доступа на основе атрибутов. Это означает, что пользователи с ролью Admin1 могут получить доступ только к сотрудникам в США, а пользователи с ролью Admin2 могут получить доступ к сведениям о сотрудниках как в США, так и в ЕС.

Чего я хотел бы добиться, так это переопределить запрос

Select * from MyTable, который должен быть расширен на Select * from MyTable where (in clause)

Чтобы внести такие изменения в наше приложение, будет огромная активность. Однако, возможно ли будет внести такие изменения в запрос JPA, сгенерированный с подробностями безопасности?

Наше приложение с загрузочной пружиной, использующее Olin go OData 2 для всего взаимодействия с пользователем а не пружинные упоры контроллеров. Для запросов OData мы также используем прослушиватель запросов, который дает нам запрос JPA, который можно улучшить с помощью ODataJPAQueryExtensionEntityListener . Однако запросы, генерируемые во время асинхронных заданий, и любые другие запросы не в контексте OData. Мы хотим единообразного подхода для улучшения запросов из центрального места.

...