Custom Access for Groups in Joomla!

One of the more limiting things in Joomla! is the way that user and group access is handled.  In order for a backend Joomla! user to have access to modules and components they have to be set up as either an Administrator or Super Administrator.  The problem is that this gives them access to a host of capabilities that the average content owner should not mess with.  By altering gacl.class.php you can alter the default Joomla! access control and specifically define the role for individual users or groups.  Here is how it is done.

The file:
includes/gacl.class.php
can be modified to alter user access for the built in Joomla groups. For instance, you can give Backend Managers access to the Web Links component in the following way:

around line 152 you will find

// uncomment following to allow managers to edit modules

 

replace the following code:

//array( 'administration', 'edit', 'users', 'manager', 'modules', 'all' );

// access to components

//$this->_mos_add_acl( 'administration', 'install', 'users', 'administrator', 'components', 'all' );

//$this->_mos_add_acl( 'administration', 'install', 'users', 'super administrator', 'components', 'all' );

//$this->_mos_add_acl( 'administration', 'edit', 'users', 'super administrator', 'components', 'all' );

//$this->_mos_add_acl( 'administration', 'edit', 'users', 'administrator', 'components', 'all' );

//$this->_mos_add_acl( 'administration', 'edit', 'users', 'manager', 'components', 'com_newsflash' );

//$this->_mos_add_acl( 'administration', 'edit', 'users', 'manager', 'components', 'com_frontpage' );

//$this->_mos_add_acl( 'administration', 'edit', 'users', 'manager', 'components', 'com_media' );

// ** add additional components for a manager as desired, or give access to all

 

with this code:

// Standard Access - Start


$this->_mos_add_acl( 'administration', 'install', 'users', 'administrator', 'components', 'all' );

$this->_mos_add_acl( 'administration', 'install', 'users', 'super administrator', 'components', 'all' );


$this->_mos_add_acl( 'administration', 'edit', 'users', 'super administrator', 'components', 'all' );


$this->_mos_add_acl( 'administration', 'edit', 'users', 'administrator', 'components', 'all' );


// Standard Access - End


// Custom Access - Start


// added for managers' access


//necessary to give managers access to components menu


$this->_mos_add_acl( 'administration', 'install', 'users', 'manager', 'components', 'all' );

$this->_mos_add_acl( 'administration', 'edit', 'users', 'manager', 'components', 'com_massmail' );


$this->_mos_add_acl( 'administration', 'manage', 'users', 'manager', 'components', 'com_massmail' );


$this->_mos_add_acl( 'administration', 'manage', 'users', 'manager', 'components', 'com_trash' );


$this->_mos_add_acl( 'administration', 'edit', 'users', 'manager', 'components', 'com_banners' );


//grant access to the web links componenet


$this->_mos_add_acl( 'administration', 'edit', 'users', 'manager', 'components', 'com_weblinks' );

// Custom Access - End

 

The info above was extracted and modified ever so slightly from a thread in the Joomla! Forums:
http://forum.joomla.org/index.php/topic,69154.0.html