/** * Check employee permission for module (static method) * @param int $id_module * @param array $variable (action) * @param object $employee * @return bool if module can be transplanted on hook */ public static function getPermissionStatic($id_module, $variable, $employee = null) { if (!in_array($variable, array('view', 'configure', 'uninstall'))) { return false; } if (!$employee) { $employee = Context::getContext()->employee; } if ($employee->id_profile == _PS_ADMIN_PROFILE_) { return true; } $slug = Access::findSlugByIdModule($id_module) . Access::getAuthorizationFromLegacy($variable); return Access::isGranted($slug, $employee->id_profile); }
/** * Search a feature in all store * * @params string $query String to find in the catalog */ public function searchFeatures() { $this->_list['features'] = array(); global $_LANGADM; if ($_LANGADM === null) { return; } $tabs = array(); $key_match = array(); $result = Db::getInstance()->executeS(' SELECT class_name, name FROM ' . _DB_PREFIX_ . 'tab t INNER JOIN ' . _DB_PREFIX_ . 'tab_lang tl ON (t.id_tab = tl.id_tab AND tl.id_lang = ' . (int) $this->context->employee->id_lang . ') WHERE active = 1' . (defined('_PS_HOST_MODE_') ? ' AND t.`hide_host_mode` = 0' : '')); foreach ($result as $row) { if (Access::isGranted('ROLE_MOD_TAB_' . strtoupper($row['class_name']) . '_READ', $this->context->employee->id_profile)) { $tabs[strtolower($row['class_name'])] = $row['name']; $key_match[strtolower($row['class_name'])] = $row['class_name']; } } foreach (AdminTab::$tabParenting as $key => $value) { $value = stripslashes($value); if (!isset($tabs[strtolower($key)]) || !isset($tabs[strtolower($value)])) { continue; } $tabs[strtolower($key)] = $tabs[strtolower($value)]; $key_match[strtolower($key)] = $key; } $this->_list['features'] = array(); foreach ($_LANGADM as $key => $value) { if (stripos($value, $this->query) !== false) { $value = stripslashes($value); $key = strtolower(substr($key, 0, -32)); if (in_array($key, array('AdminTab', 'index'))) { continue; } // if class name doesn't exists, just ignore it if (!isset($tabs[$key])) { continue; } if (!isset($this->_list['features'][$tabs[$key]])) { $this->_list['features'][$tabs[$key]] = array(); } $this->_list['features'][$tabs[$key]][] = array('link' => Context::getContext()->link->getAdminLink($key_match[$key]), 'value' => Tools::safeOutput($value)); } } }
/** * * @param string $action * @param bool $disable */ public function access($action, $disable = false) { if (empty($this->tabAccess[$action])) { $slugs = array(); foreach ((array) Access::getAuthorizationFromLegacy($action) as $roleSuffix) { $slugs[] = $this->getTabSlug() . $roleSuffix; } $this->tabAccess[$action] = Access::isGranted($slugs, $this->context->employee->id_profile); } return $this->tabAccess[$action]; }