function connector_out_check_credentials($username, $password, $source_id) { global $dbh; $source_id += 0; if (!$username) { //--Utilisateur anonyme //Verifions si le groupe anonyme a le droit d'utiliser la source $sql = "SELECT COUNT(1) FROM connectors_out_sources_esgroups WHERE connectors_out_source_esgroup_sourcenum = " . $source_id . ' AND connectors_out_source_esgroup_esgroupnum = -1'; $count = mysql_result(mysql_query($sql, $dbh), 0, 0); $allowed = $count > 0; if ($allowed) { $sql = 'SELECT esgroup_pmbusernum FROM es_esgroups WHERE esgroup_id = -1'; $res = mysql_query($sql, $dbh); if (!mysql_numrows($res)) { return 1; } else { return mysql_result($res, 0, 0); } } return false; } else { if (strpos($username, "@") !== false) { //--Lecteur $login_info = explode("@", $username); if (count($login_info) != 2) { return false; } $empr_name = $login_info[0]; $es_group = $login_info[1]; if (!$empr_name || !$es_group) { return false; } //Cherchons le lecteur $empr_id = 0; $sql = "SELECT id_empr FROM empr WHERE empr_login = '******' AND empr_password = '******'"; $res = mysql_query($sql, $dbh); if (mysql_numrows($res)) { $empr_id = mysql_result($res, 0, 0); } //Pas trouvé? Plouf! if (!$empr_id) { return false; } //Cherchons le groupe $sql = "SELECT esgroup_id FROM es_esgroups WHERE esgroup_name = '" . addslashes($es_group) . "'"; $res = mysql_query($sql, $dbh); //Pas trouvé? Plouf! if (!mysql_numrows($res)) { return false; } $esgroup_id = mysql_result($res, 0, 0); $es_group = new es_esgroup($esgroup_id); //Vérifions que le lecteur est dans le groupe $sql = "SELECT SUM(EXISTS(SELECT 1 FROM empr_groupe WHERE empr_id = " . $empr_id . " AND groupe_id = esgroupuser_usernum)) > 0 AS in_group FROM es_esgroup_esusers WHERE esgroupuser_usertype = 2 AND esgroupuser_groupnum = " . $esgroup_id; $res = mysql_query($sql, $dbh); $empr_in_group = mysql_result($res, 0, 0); if (!$empr_in_group) { //Vil faquin, tu as cru pouvoir rentré en mentant sur ton groupe d'origine? Ca marche pas ici; plouf! return false; } //Verifions si le groupe a le droit d'utiliser la source $sql = "SELECT COUNT(1) FROM connectors_out_sources_esgroups WHERE connectors_out_source_esgroup_sourcenum = " . $source_id . ' AND connectors_out_source_esgroup_esgroupnum = ' . $esgroup_id; $count = mysql_result(mysql_query($sql, $dbh), 0, 0); $allowed = $count > 0; //Pas le droit? Plouf! if (!$allowed) { return false; } //Et voilà, tout est bon, ça passe return $es_group->esgroup_pmbuserid; } else { //--Utilisateur classique //Cherchons si cet utilisateur existe, et si oui, récupérons son groupe $esuser = es_esuser::create_from_credentials($username, $password); if (!$esuser) { return false; } $esgroup_id = $esuser->esuser_group; //Si l'utilisateur n'est pas dans un groupe, il ne peut pas avoir de droits, donc plouf if (!$esgroup_id) { return false; } //Verifions si le groupe a le droit d'utiliser la source $sql = "SELECT COUNT(1) FROM connectors_out_sources_esgroups WHERE connectors_out_source_esgroup_sourcenum = " . $source_id . ' AND connectors_out_source_esgroup_esgroupnum = ' . $esgroup_id; $count = mysql_result(mysql_query($sql, $dbh), 0, 0); $allowed = $count > 0; //Pas le droit? Plouf! if (!$allowed) { return false; } //Sinon on renvoi le pmbuserid associé au groupe $esgroup = new es_esgroup($esgroup_id); return $esgroup->esgroup_pmbuserid; } } return false; }