protected function _changePassLdap(\Core_Dto_Mapping $dtoPass, $userEntity, $recover = FALSE) { try { $ldapUser = $userEntity->getSqPessoa()->getSqPessoaFisica()->getNuCpf(); $userPasswd = $dtoPass->getTxSenha(); $adminAuth = $this->_adminAuthLDAP(); if (!$recover) { $adminAuth->bind($ldapUser, $userPasswd); } $userDn = current($adminAuth->search("samAccountName={$ldapUser}")->toArray()); if (!$userDn) { throw new \Core_Exception_ServiceLayer_Verification("Usuário inexistente no LDAP"); } $userData = array(); \Zend_Ldap_Attribute::setPassword($userData, $dtoPass->getTxSenhaNova(), \Zend_Ldap_Attribute::PASSWORD_UNICODEPWD); $this->_adminAuthLDAP()->update($userDn['dn'], $userData); } catch (\Zend_Ldap_Exception $exc) { $message = sprintf('[SICA-e] LDAP Error in %s: "%s"', __METHOD__, $exc->getMessage()); error_log($message); $this->getMessaging()->addErrorMessage($exc->getMessage()); $message = sprintf('[Erro no LDAP] %s', $exc->getMessage()); $ldapCode = $exc->getCode(); if ($ldapCode > 0) { $message = sprintf('LDAP0x%x', $ldapCode); } throw new \Core_Exception_ServiceLayer_Verification($message); } }