/** * Reformat role in a clean way. This filter assumes that the roles passed are known to {@see * RoleHierarchyHelper} and formatted following the ROLE_%s mask. * * @example * roleFilter(['ROLE_USER']) // "user" * roleFilter(['ROLE_ADMIN']) // "admin" * roleFilter(['ROLE_SUPER_ADMIN']) // "root" * * @param array $roles Array of valid Symfony roles. * * @return string Formatted top role if role known, empty string otherwise. */ public function userTopRoleFilter(array $roles) { $topRole = RoleHierarchyHelper::getTopLevelRole($roles); if (null === $topRole) { return ''; } if ('ROLE_SUPER_ADMIN' === $topRole) { return 'root'; } return strtolower(substr($topRole, 5)); }
/** * @testdox Test RoleHierarchyHelper::getTopLevelRole(). * * @covers ::getTopLevelRole * @dataProvider rolesProvider * * @param array $roles List of roles. * @param string|null $expected Expected value returned by the method. */ public function testGetTopLevelRole(array $roles, $expected) { $this->assertEquals($expected, RoleHierarchyHelper::getTopLevelRole($roles)); }