From ea15a073ec1e1a25f5cda9bf58c8614c6bd3be4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Bernigaud?= <come.bernigaud@opensides.be> Date: Tue, 2 Sep 2014 10:55:27 +0200 Subject: [PATCH] Fixes #2919 Implemented admin role and user creation --- setup/class_setupStep_Migrate.inc | 41 +++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/setup/class_setupStep_Migrate.inc b/setup/class_setupStep_Migrate.inc index 7b1d4b106..5e7a29ad1 100644 --- a/setup/class_setupStep_Migrate.inc +++ b/setup/class_setupStep_Migrate.inc @@ -891,6 +891,29 @@ class Step_Migrate extends setupStep function check_adminAccount_migrate_confirm(&$checkobj) { + global $config; + session::global_set('CurrentMainBase', $config->current['BASE']); + + /* Creating role */ + $ldap = $config->get_ldap_link(); + + $ldap->cd($config->current['BASE']); + $ldap->search('(&(objectClass=gosaRole)(gosaAclTemplate=*:all;cmdrw))', array('dn')); + if ($attrs = $ldap->fetch()) { + $roledn = $attrs['dn']; + } else { + $tabObject = objects::create('aclRole'); + $baseObject = $tabObject->getBaseObject(); + + $baseObject->cn = 'admin'; + $baseObject->description = _('Gives all rights on all objects'); + $baseObject->gosaAclTemplate = array(array('all' => array('0' => 'cmdrw'))); + + $tabObject->save(); + $roledn = $tabObject->dn; + } + + /* Creating user */ $tabObject = objects::create('user'); $_POST['givenName'] = 'System'; $_POST['sn'] = 'Administrator'; @@ -905,6 +928,24 @@ class Step_Migrate extends setupStep return FALSE; } $tabObject->save(); + $admindn = $tabObject->dn; + + /* Assigning role */ + $tabObject = objects::open($config->current['BASE'], 'aclAssignment'); + $baseObject = $tabObject->getBaseObject(); + + $assignments = $baseObject->gosaAclEntry; + array_unshift( + $assignments, + array( + 'scope' => 'subtree', + 'role' => $roledn, + 'members' => array($admindn), + ) + ); + $baseObject->gosaAclEntry = $assignments; + $tabObject->save(); + return TRUE; } -- GitLab