Beispiel #1
0
 /**
  * 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));
            }
        }
    }
Beispiel #3
0
 /**
  *
  * @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];
 }