эндпоинтов по авторитис, для этого используется 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 )
Обсуждают сегодня