Ограничить доступ менеджера joomla 1.5 к компонентам - PullRequest
1 голос
/ 04 июня 2011

Я хочу ограничить компоненты для доступа по роли менеджера в Joomla 1.5.

И будет хорошо, если это будет возможно только с помощью какой-то строки кодалучше использовать любой компонент / расширение.

Любая помощь будет оценена.

Спасибо

Ответы [ 4 ]

1 голос
/ 04 июня 2011

Вы не сможете достичь уровня контроля доступа с помощью всего лишь нескольких строк кода. Если бы это было так просто, ACL не был бы таким большим делом.

Вам нужно расширение, которое позволит вам управлять уровнями доступа администратора. Взгляните на это -

http://extensions.joomla.org/extensions/access-a-security/backend-a-full-access-control/13524

http://extensions.joomla.org/extensions/access-a-security/backend-a-full-access-control/2587

http://extensions.joomla.org/extensions/access-a-security/backend-a-full-access-control/9040 - также есть более продвинутая профессиональная версия

Каждый из них должен дать вам необходимый контроль.

1 голос
/ 20 июня 2011

Поскольку вы хотите использовать пользовательское кодирование, чтобы ограничить компоненты только для менеджера.поэтому откройте файл administrator / modules / mod_menu / helper.php

В строке № 167. для компонентов есть foreach.

        $login_user = JFactory::getUser(); // <--------------object for login user------------------------->
        foreach ($comps as $row)
        {
            if ($editAllComponents | $user->authorize('administration', 'edit', 'components', $row->option))
            {
                if ($row->parent == 0 && (trim($row->admin_menu_link) || array_key_exists($row->id, $subs)))
                {

                  if($login_user->gid == '23') // <--------------check for manager-------------------------> 
                    {


                    $text = $lang->hasKey($row->option) ? JText::_($row->option) : $row->name;
                     if($text == 'Banner' or $text == 'Polls' )  // <--------------write component name which is visibal to manager only-------------------------> 
            {
                    $link = $row->admin_menu_link ? "index.php?$row->admin_menu_link" : "index.php?option=$row->option";
                    if (array_key_exists($row->id, $subs)) {
                        $menu->addChild(new JMenuNode($text, $link, $row->admin_menu_img), true);
                        foreach ($subs[$row->id] as $sub) {
                            $key  = $row->option.'.'.$sub->name;
                            $text = $lang->hasKey($key) ? JText::_($key) : $sub->name;
                            $link = $sub->admin_menu_link ? "index.php?$sub->admin_menu_link" : null;
                            $menu->addChild(new JMenuNode($text, $link, $sub->admin_menu_img));
                        }
                        $menu->getParent();
                    } else {
                        $menu->addChild(new JMenuNode($text, $link, $row->admin_menu_img));
                    }

                }
                }else  // <--------------else for other group-------------------------> 
                {
                // no change in it


                    $text = $lang->hasKey($row->option) ? JText::_($row->option) : $row->name;
                    $link = $row->admin_menu_link ? "index.php?$row->admin_menu_link" : "index.php?option=$row->option";
                    if (array_key_exists($row->id, $subs)) {
                        $menu->addChild(new JMenuNode($text, $link, $row->admin_menu_img), true);
                        foreach ($subs[$row->id] as $sub) {
                            $key  = $row->option.'.'.$sub->name;
                            $text = $lang->hasKey($key) ? JText::_($key) : $sub->name;
                            $link = $sub->admin_menu_link ? "index.php?$sub->admin_menu_link" : null;
                            $menu->addChild(new JMenuNode($text, $link, $sub->admin_menu_img));
                        }
                        $menu->getParent();
                    } else {
                        $menu->addChild(new JMenuNode($text, $link, $row->admin_menu_img));
                    }

                }

                }
            }
        }
1 голос
/ 04 июня 2011

Может это тебе поможет?

Иди кинь эту ссылку ...

http://forum.joomla.org/viewtopic.php?p=2410109

0 голосов
/ 24 апреля 2015

Большое спасибо, Ракеш. это прекрасно работает.

Обратите внимание: в моем случае код сверху: if ($ login_user-> gid == '23') должен был быть изменен на if ($ user-> gid == '23') как $ login_user был не определен.

Кроме того, вы добавили 1 дополнительный} в конце, чтобы соответствовать {}.

...