эндпоинтов по авторитис, для этого используется SecurityWebFilterChain
Допустим имеем две роли:
1) Admin ( имеет авторити FULL_ACCESS и MANAGE_ALL_BRANCHES )
2) Owner ( имеет авторити FULL_ACCESS )
И тот и второй может создавать других пользователей, только первый для всех филиалов, а второй только для своего, ( есть еще роли, которые могут создавать в пределах какой-то группы филиалов ) вот нужно куда-то вынести эту логику по проверке, типа как-то так:
if ( user.hasAuthority(MANAGE_ALL_BRANCHES)){
// ok
} else (
check if branchId for new user in allowedBranchIds
)
Кроме этого еще нужно проверить может ли конкретный пользователь создавать других пользователей с указываемой ролью
В самом токене зашито authorities list, userId, за списком разрешенных ролей на создание других пользователей прийдется сбегать в бд
Какие best practices есть по этому поводу?
Первое что приходит в голову вынести эту логику в ApiRequestValidationService, и там проверять все эти условия, если не прошли возвращать моно от PermissionException, если все ок - пустое моно
Также еще проскакивает идея сделать какой-то фильтр, которых будет срабатывать после основного ( там вроде в цепочку можно добавить фильтр используя addFilterAfter )
Обсуждают сегодня