PHP-Code:
USA
*
* For questions, help, comments, discussion, etc., please join the
* phpGACL mailing list. http://sourceforge.net/mail/?group_id=57103
*
* You may contact the author of phpGACL by e-mail at:
* ipso@snappymail.ca
*
* The latest version of phpGACL can be obtained from:
* http://phpgacl.sourceforge.net/
*
*/
/** ensure this file is being included by a parent file */
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
// NOTE, this is a temporary solution until phpGACL libraries are fully implemented
/* -- Code to manually add a group to the ARO Groups
SET @parent_name = 'Registered';
SET @new_name = 'Support';
-- Select the parent node to insert after
SELECT @ins_id := group_id, @ins_lft := lft, @ins_rgt := rgt
FROM mos_core_acl_aro_groups
WHERE name = @parent_name;
SELECT @new_id := MAX(group_id) + 1 FROM mos_core_acl_aro_groups;
-- Make room for the new node
UPDATE mos_core_acl_aro_groups SET rgt=rgt+2 WHERE rgt>=@ins_rgt;
UPDATE mos_core_acl_aro_groups SET lft=lft+2 WHERE lft>@ins_rgt;
-- Insert the new node
INSERT INTO mos_core_acl_aro_groups (group_id,parent_id,name,lft,rgt)
VALUES (@new_id,@ins_id,@new_name,@ins_rgt,@ins_rgt+1);
*/
class gacl {
// --- Private properties ---
/*
* Enable Debug output.
*/
var $_debug = FALSE;
/*
* Database configuration.
*/
var $db=null;
var $_db_table_prefix = '#__core_acl_';
/*
* NOTE: This cache must be manually cleaned each time ACL's are modified.
* Alternatively you could wait for the cache to expire.
*/
var $_caching = FALSE;
var $_force_cache_expire = TRUE;
// --- Fudge properties
var $acl=null;
var $acl_count=0;
/*
* Constructor
*/
function gacl( $db=null ) {
global $database;
$this->db = $db ? $db : $database;
// ARO value is currently the user type,
// this changes to user id in proper implementation
// No hierarchial inheritance so have to do that the long way
$this->acl = array();
// backend login
$this->_mos_add_acl( 'administration', 'login', 'users', 'administrator', null, null );
$this->_mos_add_acl( 'administration', 'login', 'users', 'super administrator', null, null );
$this->_mos_add_acl( 'administration', 'login', 'users', 'manager', null, null );
// backend menus
//$this->_mos_add_acl( 'administration', 'config', 'users', 'administrator', null, null );
$this->_mos_add_acl( 'administration', 'config', 'users', 'super administrator', null, null );
// access to db admin
//$this->_mos_add_acl( 'administration', 'manage', 'users', 'super administrator', 'components', 'com_dbadmin' );
// access to templates
//$this->_mos_add_acl( 'administration', 'manage', 'user', 'administrator', 'components', 'com_templates' )
$this->_mos_add_acl( 'administration', 'manage', 'users', 'super administrator', 'components', 'com_templates' );
$this->_mos_add_acl( 'administration', 'install', 'users', 'super administrator', 'templates', 'all' );
// access to trash
$this->_mos_add_acl( 'administration', 'manage', 'users', 'administrator', 'components', 'com_trash' );
$this->_mos_add_acl( 'administration', 'manage', 'users', 'super administrator', 'components', 'com_trash' );
// access to menu manager
$this->_mos_add_acl( 'administration', 'manage', 'users', 'administrator', 'components', 'com_menumanager' );
$this->_mos_add_acl( 'administration', 'manage', 'users', 'super administrator', 'components', 'com_menumanager' );
// access to language
//$this->_mos_add_acl( 'administration', 'manage', 'users', 'administrator', 'components', 'com_languages' );
$this->_mos_add_acl( 'administration', 'manage', 'users', 'super administrator', 'components', 'com_languages' );
$this->_mos_add_acl( 'administration', 'install', 'users', 'super administrator', 'languages', 'all' );
// access to modules
$this->_mos_add_acl( 'administration', 'install', 'users', 'administrator', 'modules', 'all' );
$this->_mos_add_acl( 'administration', 'install', 'users', 'super administrator', 'modules', 'all' );
$this->_mos_add_acl( 'administration', 'edit', 'users', 'super administrator', 'modules', 'all' );
$this->_mos_add_acl( 'administration', 'edit', 'users', 'administrator', 'modules', 'all' );
// access to modules
$this->_mos_add_acl( 'administration', 'install', 'users', 'administrator', 'mambots', 'all' );
$this->_mos_add_acl( 'administration', 'install', 'users', 'super administrator', 'mambots', 'all' );
$this->_mos_add_acl( 'administration', 'edit', 'users', 'super administrator', 'mambots', 'all' );
$this->_mos_add_acl( 'administration', 'edit', 'users', 'administrator', 'mambots', 'all' );
// uncomment following to allow managers to edit modules
//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' );
$this->_mos_add_acl( 'administration', 'edit', 'users', 'manager', 'components', 'com_lgmngr' );
// ** add additional components for a manager as desired, or give access to all
// massmail
$this->_mos_add_acl( 'administration', 'manage', 'users', 'super administrator', 'components', 'com_massmail' );
// manage users
$this->_mos_add_acl( 'administration', 'manage', 'users', 'administrator', 'components', 'com_users' );
$this->_mos_add_acl( 'administration', 'manage', 'users', 'super administrator', 'components', 'com_users' );
// email block users property
$this->_mos_add_acl( 'administration', 'edit', 'users', 'administrator', 'user properties', 'block_user' );
$this->_mos_add_acl( 'administration', 'edit', 'users', 'super administrator', 'user properties', 'block_user' );
// email system events
$this->_mos_add_acl( 'workflow', 'email_events', 'users', 'administrator', null, null );
$this->_mos_add_acl( 'workflow', 'email_events', 'users', 'super administrator', null, null );
// actions
$this->_mos_add_acl( 'action', 'add', 'users', 'author', 'content', 'all' );
$this->_mos_add_acl( 'action', 'add', 'users', 'editor', 'content', 'all' );
$this->_mos_add_acl( 'action', 'add', 'users', 'publisher', 'content', 'all' );
$this->_mos_add_acl( 'action', 'edit', 'users', 'author', 'content', 'own' );
$this->_mos_add_acl( 'action', 'edit', 'users', 'editor', 'content', 'all' );
$this->_mos_add_acl( 'action', 'edit', 'users', 'publisher', 'content', 'all' );
$this->_mos_add_acl( 'action', 'publish', 'users', 'publisher', 'content', 'all' );
$this->_mos_add_acl( 'action', 'add', 'users', 'manager', 'content', 'all' );
$this->_mos_add_acl( 'action', 'edit', 'users', 'manager', 'content', 'all' );
$this->_mos_add_acl( 'action', 'publish', 'users', 'manager', 'content', 'all' );
$this->_mos_add_acl( 'action', 'add', 'users', 'administrator', 'content', 'all' );
$this->_mos_add_acl( 'action', 'edit', 'users', 'administrator', 'content', 'all' );
$this->_mos_add_acl( 'action', 'publish', 'users', 'administrator', 'content', 'all' );
$this->_mos_add_acl( 'action', 'add', 'users', 'super administrator', 'content', 'all' );
$this->_mos_add_acl( 'action', 'edit', 'users', 'super administrator', 'content', 'all' );
$this->_mos_add_acl( 'action', 'publish', 'users', 'super administrator', 'content', 'all' );
$this->acl_count = count( $this->acl );
}
/*
This is a temporary function to allow 3PD's to add basic ACL checks for their
modules and components. NOTE: this information will be compiled in the db
in future versions
*/
function _mos_add_acl( $aco_section_value, $aco_value,
$aro_section_value, $aro_value, $axo_section_value=NULL, $axo_value=NULL ) {
$this->acl[] = array( $aco_section_value, $aco_value, $aro_section_value, $aro_value, $axo_section_value, $axo_value );
$this->acl_count = count( $this->acl );
}
/*======================================================================*\
Function: $gacl_api->debug_text()
Purpose: Prints debug text if debug is enabled.
\*======================================================================*/
function debug_text($text) {
if ($this->_debug) {
echo "$text<br>\n";
}
return true;
}
Wie kriegen wir die Rechte jetzt wieder hin??
Lesezeichen