em = $em; foreach ($crudConfig as $conf) { $this->crudConfig[$conf['name']] = $conf; } } /** * @param $crudName * @param $action * * @return string */ public function buildDefaultRole($crudName, $action) { if (empty($this->crudConfig[$crudName]['base_role'])) { throw new LogicException(sprintf('the base role is not defined. You must define ' . 'on or override %s or %s methods', __METHOD__, 'getRoleFor')); } return strtoupper( $this->crudConfig[$crudName]['base_role'] . '_' . $action ); } /** * @param $key * @param $crudName * @param null $action * * @return string */ public function getConfigValue($key, $crudName, $action = null) { $config = $this->crudConfig[$crudName]; switch ($key) { case self::ROLE: return $config['actions'][$action]['role'] ?? $this->buildDefaultRole($crudName, $action); } } /** * @param $crudName * @param $action * * @return bool */ public function hasAction($crudName, $action) { return array_key_exists( $action, $this->crudConfig[$crudName]['actions'] ); } }