Пример #1
0
 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);
             }
         }
     }
 }
Пример #2
0
 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é";
 }