Мы создаем веб-приложение Java. Мы используем контейнеры EJB и JPA с Wildfly 9.2.
Теперь мы хотим интегрировать систему разрешений, в которой у пользователя есть определенная роль, но эта роль предоставляется только в сочетании с определенной сущностью. Я назову этот отдел ресурсов доступа.
Таким образом, у нас будет список разрешений для пользователя, хранящийся в такой таблице:
| User ID | Department | Role |
| ------- | ---------- | ------- |
| 1 | A | MANAGER |
| 1 | B | ADMIN |
| 2 | B | MANAGER |
Кроме того, у нас есть глобальные роли. У пользователя есть набор глобальных ролей, которые будут применяться, если в приведенной выше таблице нет записи с рассматриваемым отделом.
| User ID | Role |
| ------- | ------- |
| 1 | VIEWER |
| 3 | MANAGER |
Как мы можем легко проверить, находится ли пользователь в определенной роли, заданной отделом?
Просто используя аннотацию @RolesAllowed, мы можем проверить наличие определенной роли, но не ограничиваться отделом.