/** * Buscar al usuario en un grupo. * * @param string $userLogin con el login del usuario * @throws \Exception * @return bool */ public static function searchADUserInGroup($userLogin) { if (Ldap::$_isADS === false) { return false; } $log = new Log(__FUNCTION__); $ldapGroup = Config::getValue('ldap_group'); // El filtro de grupo no está establecido if (empty($ldapGroup)) { return true; } // Obtenemos el DN del grupo if (!($groupDN = Ldap::searchGroupDN())) { return false; } $filter = '(memberof:1.2.840.113556.1.4.1941:=' . $groupDN . ')'; $filterAttr = array("sAMAccountName"); $searchRes = @ldap_search(Ldap::$_ldapConn, Ldap::$_searchBase, $filter, $filterAttr); if (!$searchRes) { $log->addDescription(_('Error al buscar el grupo de usuarios')); $log->addDescription('LDAP ERROR: ' . ldap_error(Ldap::$_ldapConn) . '(' . ldap_errno(Ldap::$_ldapConn) . ')'); $log->addDescription('LDAP FILTER: ' . $filter); $log->writeLog(); throw new \Exception(_('Error al buscar el grupo de usuarios')); } if (@ldap_count_entries(Ldap::$_ldapConn, $searchRes) === 0) { $log->addDescription(_('No se encontró el grupo con ese nombre')); $log->addDescription('LDAP ERROR: ' . ldap_error(Ldap::$_ldapConn) . '(' . ldap_errno(Ldap::$_ldapConn) . ')'); $log->addDescription('LDAP FILTER: ' . $filter); $log->writeLog(); throw new \Exception(_('No se encontró el grupo con ese nombre')); } foreach (ldap_get_entries(Ldap::$_ldapConn, $searchRes) as $entry) { if ($userLogin === $entry['samaccountname'][0]) { return true; } } return false; }