限制joomla 1.5管理器访问组件

时间:2011-06-04 09:32:58

标签: php joomla components joomla1.5

我希望 限制 组件可以通过Joomla 1.5中的Manager角色进行访问。

如果可以通过一些代码而不是使用任何组件/扩展来实现它将会很好。

任何帮助将不胜感激。

由于

4 个答案:

答案 0 :(得分:1)

愿这对你有帮助吗?

去抛出这个链接......

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

答案 1 :(得分:1)

只需几行代码就无法实现访问控制级别。如果这么简单,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 - 还有一个更高级的专业版

每一项都应该为您提供所需的控制。

答案 2 :(得分:1)

由于您希望使用自定义编码来限制管理器的组件。 所以打开文件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));
                    }

                }

                }
            }
        }

答案 3 :(得分:-1)

非常感谢,拉克什。它很棒。

请注意:就我而言,上面的代码: if($ login_user-&gt; gid =='23') 必须改为 if($ user-&gt; gid =='23') 因为$ login_user未定义。

此外,您最后添加了1个}以匹配{}。