Супер Роль не имеет доступа к унаследованным Ролям .. ??
Вот как выглядит моя ролевая иерархия:
role_hierarchy:
ROLE_ADMIN: [ROLE_BACKEND_USER, ROLE_SALES]
ROLE_SUPER_ADMIN: ROLE_ADMIN
ROLE_SALES: ROLE_USER
ROLE_BACKEND_USER: ROLE_USER
Когда я вхожу в систему как ADMIN, я вижу, что я унаследовал роли «ROLE_BACKEND_USER»; «ROLE_SALES» и «ROLE_USER».
Однако я не могу получить доступ к ROLE_SALES, хотя унаследовал роль.
if(!$this->getUser()->hasRole('ROLE_SALES')) {
throw new AccessDeniedException('Cannot loggin Need ROLE_SALES ');
}
Также $this->get('security.authorization_checker')->isGranted('ROLE_CARMANDO')
работает..
П.С .: Я тоже использую FOS Bundle.
Это связано с тем, что метод hasRole FOSUB проверяет, есть ли у вас роль, когда isGranted проверяет привилегии.
В настоящее время у вас есть привилегии ROLE_SALES, но нет самого ROLE_SALES. Вот почему isGranted работает, когда hasRole не работает
Других решений пока нет …