FasterJoomla

Joomla security and optimization

Visita il nuovo sito FasterJoomla che raccoglie i nostri articoli ed estensioni per Joomla!

Si parla di sicurezza, velocità, sviluppo di estensioni per Joomla.

Trovate pubblicate anche le nostre guide pratiche.

Why do some administrator / backend components show only if the user is Administrator and not to Managers? How can I control it?

Joomla! 1.6, 1.7 and 2.5+ introduce a very flexible permission system (ACL), but sometimes components - even common ones like com_zoo by yootheme, omit to include the "Options" button and leave defaults which do not suit us (or forget about defaults entirely, as in the zoo case).

Purpose: to show zoo menu item also to managers or other children groups in the backend.

Situation: the component does not show an "option" button in the main configuration page, so Joomla ACL configuration is not available.

Solution: copy the ACL from a component you configure correctly (in my case, com_contact).

Tools: database access.  Minimum sql knowledge (if not, make sure you copy and paste the queries below, do not make up your own or you'll destroy your site).

Steps to make a menu item visible to managers in the backend

From a sql prompt (i.e. phpmyadmin)

1. Find the asset for zoo and contact, to compare the ACLs

select * from eco_assets where name like 'com_zoo' or name like 'com_contact'

(make sure you only have one row returned for zoo; otherwise in the next instructions add a filter on the field Id)

2. update the row: it's just missing the core ACL so it will default to Administrator and above

UPDATE `eco_assets` set `rules`= '{"core.admin":{"7":1},"core.manage":{"6":1},"core.create":[],"core.delete":[],"core.edit":[],"core.edit.state":[],"core.edit.own":[]}' where name = 'com_zoo'

That's it!

What if the component is not there?

Many of the administrator menu items will not be so easy to find.  You see, the Administrator menu is still built in code, and only the Components branch is read from the database.

If this is the case, a template override will be the solution; if you're using bluestork, simply copy

/administrator/modules/mod_menu/tmpl/default_enabled.php

to

/administrator/bluestork/html/mod_menu/default_enabled.php

and edit at will. php coding skills are not optional here.

If you get something wrong, just delete / rename the newly created default_* files and you're back to "standard" joomla! layout.  Now you can start over ...