function editAction() { // page title $this->view->title = "Profil de l'administrateur"; // get param $administratorID = $this->_getParam('administratorID'); $order = $this->_getParam('order'); $tablePage = $this->_getParam('tablePage'); $search = $this->_getParam('search'); $paramsArray = array("order" => $order, "tablePage" => $tablePage, "search" => $search); // get user data $userData = Cible_FunctionsAdministrators::getAdministratorData($administratorID); // get group data $groupsData = Cible_FunctionsAdministrators::getAllAdministratorGroups(); /********** ACTIONS ***********/ $returnLink = $this->view->url(array('controller' => 'administrator', 'action' => 'index', 'administratorID' => null)); $form = new FormExtranetUser(array('baseDir' => $this->view->baseUrl(), 'cancelUrl' => "{$returnLink}"), $groupsData->toArray()); $this->view->assign('administratorID', $administratorID); $this->view->assign('form', $form); if (!$this->_request->isPost()) { $userGroups = Cible_FunctionsAdministrators::getAllUserGroups($administratorID); $groupIDArray = array(); $i = 0; foreach ($userGroups as $userGroup) { $groupIDArray[$i] = $userGroup['EUG_GroupID']; $i++; } $form->getElement('groups')->setValue($groupIDArray); $form->populate($userData->toArray()); } else { $formData = $this->_request->getPost(); if ($form->isValid($formData)) { // validate username is unique $findUser = new ExtranetUsers(); $select = $findUser->select()->where('EU_Username = ?', $userData['EU_Username'])->where('EU_ID <> ?', $administratorID); $findUserData = $findUser->fetchAll($select); // username is allready use if ($findUserData->count() > 0) { $form->getElement('EU_Username')->addError('Un autre utilisateur possède déjà ce nom d\'utilisateur'); } else { $userData['EU_LName'] = $form->getValue('EU_LName'); $userData['EU_FName'] = $form->getValue('EU_FName'); $userData['EU_Email'] = $form->getValue('EU_Email'); $userData['EU_Username'] = $form->getValue('EU_Username'); if ($form->getValue('EU_Password') != "") { $userData['EU_Password'] = md5($form->getValue('EU_Password')); } $userData->save(); // delete all user and group association for that user $userGroups = new ExtranetUsersGroups(); $where = 'EUG_UserID = ' . $administratorID; $userGroups->delete($where); // insert all user and group association for that user if ($formData['groups']) { foreach ($formData['groups'] as $group) { $userGroupAssociationData = new ExtranetUsersGroups(); $row = $userGroupAssociationData->createRow(); $row->EUG_UserID = $administratorID; $row->EUG_GroupID = $group; $row->save(); } } header("location:" . $returnLink); } } } }
public static function getACLUser($authID) { // get user data //$authData = $this->view->user; //$authID = $authData['EU_ID']; $acl = new Zend_Acl(); /***************** ADDING ALL RESOURCES ************************/ $resourcesSelect = new ExtranetResources(); $select = $resourcesSelect->select(); $resourcesData = $resourcesSelect->fetchAll($select); foreach ($resourcesData as $resource) { $resource = new Zend_Acl_Resource($resource['ER_ControlName']); $acl->add($resource); } /*************** ADDING ALL ROLES ********************************/ $rolesSelect = new ExtranetRoles(); $select = $rolesSelect->select(); $rolesData = $rolesSelect->fetchAll($select); $rolesArray = array(); foreach ($rolesData as $role) { $rolesArray[$role['ER_ID']]['name'] = $role['ER_ControlName']; $rolesArray[$role['ER_ID']]['parent'] = array(); $rolesParentSelect = new ExtranetRolesResources(); $select = $rolesParentSelect->select()->setIntegrityCheck(false); $select->where('ERR_RoleID = ?', $role['ER_ID'])->order('ERR_InheritedParentID'); $rolesParentData = $rolesParentSelect->fetchAll($select); $rolesParentArray = array(); foreach ($rolesParentData as $roleParent) { if ($roleParent['ERR_InheritedParentID'] != 0) { $roleSelect = new ExtranetRolesResources(); $select = $roleSelect->select()->setIntegrityCheck(false); $select->from('Extranet_RolesResources')->join('Extranet_Roles', 'ER_ID = ERR_RoleID')->where('ERR_ID = ?', $roleParent['ERR_InheritedParentID']); $roleData = $roleSelect->fetchRow($select); if (!in_array($roleData['ER_ControlName'], $rolesParentArray)) { $rolesParentArray[count($rolesParentArray)] = $roleData['ER_ControlName']; } } } } $rolesArray[$role['ER_ID']]['parent'] = $rolesParentArray; foreach ($rolesArray as $roleArray) { $role = new Zend_Acl_Role($roleArray['name']); $acl->addRole($role, $roleArray['parent']); } $role = new Zend_Acl_Role($authID); $acl->addRole($role); // get all groups of the current user $groupsData = Cible_FunctionsAdministrators::getAllUserGroups($authID); $admin = false; foreach ($groupsData as $group) { if ($group['EUG_GroupID'] == 1) { $admin = true; } $groupRoleResourceSelect = new ExtranetGroupsRolesResources(); $select = $groupRoleResourceSelect->select(); $select->where('EGRRP_GroupID = ?', $group['EUG_GroupID']); $groupRoleResourceData = $groupRoleResourceSelect->fetchAll($select)->toArray(); //$this->view->dump($groupRoleResourceData); foreach ($groupRoleResourceData as $groupRoleResource) { $acl = Cible_FunctionsAdministrators::addAllRolesResourcesPermissionsUser($acl, $authID, $groupRoleResource['EGRRP_RoleResourceID']); } } return $acl; //echo $acl->isAllowed($authID, 'news', 'publish') ? "autorisé" : "refusé"; }