Example #1
0
 /**
  * For Bitrix calls.
  *
  * @param array &$params
  *
  * @return int
  */
 public static function authenticate(&$params)
 {
     try {
         // Import PEAR library gracefully...
         if (!@(include_once 'Net/LDAP2.php')) {
             throw new Capall_Ldaper_UnavailableDependencyException('PEAR::Net_LDAP2');
         }
         $ldapConnection = Net_LDAP2::connect(array('host' => COption::GetOptionString('sh.ldaper', 'host'), 'port' => COption::GetOptionInt('sh.ldaper', 'port'), 'binddn' => COption::GetOptionString('sh.ldaper', 'binddn'), 'bindpw' => COption::GetOptionString('sh.ldaper', 'bindpw')));
         if (PEAR::isError($ldapConnection)) {
             throw new Capall_Ldaper_LdapException($ldapConnection);
         }
         $ldaper = new self($ldapConnection, new Capall_Ldaper_BitrixUserManager(new CUser(), array_filter(explode(',', COption::GetOptionString('sh.ldaper', 'default_groups', '')), 'trim')), COption::GetOptionString('sh.ldaper', 'basedn'), COption::GetOptionString('sh.ldaper', 'login_attribute'), COption::GetOptionString('sh.ldaper', 'mail_attribute'), COption::GetOptionString('sh.ldaper', 'mail_attribute_index'));
         $ldapUser = $ldaper->getLdapUser($params['LOGIN']);
         if ($ldapUser) {
             if ($ldaper->authenticateUser($ldapUser, $params['PASSWORD'])) {
                 $bitrixUserIdentifier = $ldaper->getBitrixUser($ldapUser);
             } else {
                 // Authentication failed. May be user not from LDAP?
                 return false;
             }
         } else {
             // User not found. It's normal use case.
             return;
         }
         // Return identifier to Bitrix for authorization.
         return $bitrixUserIdentifier;
     } catch (Exception $error) {
         CEventLog::Log('WARNING', 'USER_LOGIN', 'sh.ldaper', $params['LOGIN'], (string) $error);
     }
 }