public function getParameters()
{
if (null === $this->tokenStorage->getToken()) {
return ['settingKey' => self::SETTING_KEY];
}
$user = $this->tokenStorage->getToken()->getUser();
if (!$user instanceof UserInterface) {
return ['settingKey' => self::SETTING_KEY];
}
$result = [];
$exists = false;
foreach ($user->getRoleObjects() as $role) {
if (null === ($setting = $role->getSetting(self::SETTING_KEY))) {
continue;
}
$result = array_merge_recursive($result, $setting->getValue());
$exists = true;
}
if (!$exists) {
return ['settingKey' => self::SETTING_KEY];
}
// array_merge_recursive accepts non-unique values they have to be removed
foreach (array_keys($result) as $section) {
$result[$section] = array_values(array_unique($result[$section]));
}
return ['settingKey' => self::SETTING_KEY, 'userToolbar' => $result];
}