From 8322a775896d6d365348611cf16559574335e32a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Bernigaud?= <come.bernigaud@opensides.be> Date: Mon, 1 Sep 2014 16:15:17 +0200 Subject: [PATCH] Fixes: #2919 By passing ACL system using a fake_userinfo class Also fixed an error in check_defaultACLs --- html/setup.php | 2 ++ setup/class_setup.inc | 19 +++++++++++++++++++ setup/class_setupStep.inc | 26 -------------------------- setup/class_setupStep_Migrate.inc | 4 +++- 4 files changed, 24 insertions(+), 27 deletions(-) diff --git a/html/setup.php b/html/setup.php index 3b4271ae4..ecac71018 100644 --- a/html/setup.php +++ b/html/setup.php @@ -101,6 +101,8 @@ if (!session::global_is_set('config')) { $config = session::global_get('config'); load_plist(FALSE); IconTheme::loadThemes('themes'); +/* Fake user bypassing acl system */ +$ui = new fake_userinfo(); /* Call setup */ $display = ""; require_once("../setup/main.inc"); diff --git a/setup/class_setup.inc b/setup/class_setup.inc index 086b42ee7..7e92a630c 100644 --- a/setup/class_setup.inc +++ b/setup/class_setup.inc @@ -22,6 +22,25 @@ require_once("class_setupStep.inc"); +class fake_userinfo extends userinfo +{ + function __construct() + { + global $config; + $this->config = &$config; + + $this->cn = 'fake_cn'; + $this->dn = 'fake_dn'; + $this->uid = 'fake_uid'; + $this->ip = $_SERVER['REMOTE_ADDR']; + + /* This fake user have all rights */ + $this->ignoreACL = TRUE; + + /* Initialize ACL_CACHE */ + $this->reset_acl_cache(); + } +} class setup { diff --git a/setup/class_setupStep.inc b/setup/class_setupStep.inc index 21af134c9..6756ec225 100644 --- a/setup/class_setupStep.inc +++ b/setup/class_setupStep.inc @@ -102,32 +102,6 @@ class setupStep extends simplePlugin return $tmp; } - /* bypass acl system as there is no user login */ - function acl_is_writeable($attribute, $skip_write = FALSE) - { - return TRUE; - } - function acl_is_readable($attribute) - { - return TRUE; - } - function acl_is_createable($base = "") - { - return TRUE; - } - function acl_is_removeable($base = "") - { - return TRUE; - } - function acl_is_moveable($base = "") - { - return TRUE; - } - function getacl($attribute, $skip_write = FALSE) - { - return 'cmdrw'; - } - /* bypass LDAP loading */ protected function loadAttributes() { diff --git a/setup/class_setupStep_Migrate.inc b/setup/class_setupStep_Migrate.inc index efb42d220..7b1d4b106 100644 --- a/setup/class_setupStep_Migrate.inc +++ b/setup/class_setupStep_Migrate.inc @@ -968,6 +968,8 @@ class Step_Migrate extends setupStep $dn = 'cn='.$role['cn'].','.get_ou('aclRoleRDN').$config->current['BASE']; $ldap->cat($dn); if ($ldap->count() == 0) { + $ldap->cd($config->current['BASE']); + $ldap->create_missing_trees(get_ou('aclRoleRDN').$config->current['BASE']); $ldap->cd($dn); $ldap->add($role); if (!$ldap->success()) { @@ -975,7 +977,7 @@ class Step_Migrate extends setupStep _('Migration error'), sprintf( _('Cannot add ACL role "%s":').'<br/><br/><i>%s</i>', - LDAP::fix($roledn), $ldap->get_error() + LDAP::fix($dn), $ldap->get_error() ), ERROR_DIALOG ); -- GitLab