'Extrait RCS', 'ACTES' => 'Pièces officielles', 'IDPROCOL' => 'Fiche procédure collective', 'PRIVILEGES' => 'Privilèges', 'IPARI' => 'Investigation par l\'image IparI©', 'MARQUES' => 'Marques déposées', 'INDISCORE' => 'indiScore©', 'INDISCORE2' => 'Rapport synthetique', 'INDISCORE3' => 'Rapport complet', 'INDISCOREP' => 'indiScore+', 'INDISCORE2P' => 'Rapport synthetique+', 'INDISCORE3P' => 'Rapport complet+', 'SCORECSF' => 'Score CSF', 'EVENINSEE' => 'Évènements INSEE', 'AVISINSEE' => 'Avis de situation INSEE', 'SURVANNONCE' => 'Surveillance des annonces légales', 'SURVINSEE' => 'Surveillance des événements INSEE', 'SURVBILAN' => 'Surveillance des bilans', 'SURVSCORE' => 'Surveillance des événements sur le score', 'SURVACTES' => 'Surveillance des actes', 'SURVDIRIGEANTS'=> 'Surveillance des dirigeants', 'SURVPRIV' => 'Surveillance des privilèges', 'SURVLISTE' => 'Liste des surveillances', 'PORTEFEUILLE' => 'Portefeuille', 'INVESTIG' => 'Investigation', 'ENQUETEC' => 'Enquête commerciale', 'INTERNATIONAL' => 'Recherche Internationale', 'BDF' => 'Banque de France', 'MONPROFIL' => 'Mon profil', 'EDITION' => 'Mode Edition', 'UPLOADBILAN' => 'Saisie de bilan', 'DIRIGEANTSOP' => 'Liste des dirigeants opérationnels', 'RECHCSV' => 'Export des résultats de la recherche', ); protected $listePrefs = array( 'NAF4' => 'Afficher les anciens NAF', 'NACE' => 'Afficher les codes NACES', 'NEWS' => 'Afficher les news Google©', 'MAPPY' => 'Afficher les façades d\'immeubles', 'CARTES' => 'Afficher les cartes et les plans', 'VOIRSURV' => 'Afficher les entités sous surveillances', 'DEMANDEREF' => 'Demande de référence par defaut', ); public $listError = array( '0900' => 'Identifiant ou mot de passe incorrect !', '0901' => 'Accès WS non authorisé pour cette utilisateur !', '0902' => 'Méthode non authorisée dans votre profil !', '1010' => 'Siren invalide', '1011' => 'Identifiant invalide', '1020' => 'Siren inexistant', '1021' => 'Type d\'identifiant inexistant', '1030' => 'Aucun résultat pour ce siren en base', '3000' => 'Service disponible', '9000' => 'Service S&D indisponible', '9001' => 'Service partenaire indisponible', '9002' => 'Méthode provisoirement indisponible', '9003' => 'Version du service désactivé', '9004' => 'Version du service inexistant', '9010' => 'Fichier indisponible', '9020' => 'Requête incorrecte', ); public function __construct() { define ('DATETIME', date('YmdHis')); define ('DATE', substr(DATETIME,0,8)); define ('TIME', substr(DATETIME,8,6)); define ('DATE_LISIBLE', substr(DATETIME,6,2).'/'.substr(DATETIME,4,2).'/'.substr(DATETIME,0,4)); define ('TIME_LISIBLE', substr(DATETIME,8,2).':'.substr(DATETIME,10,2).':'.substr(DATETIME,12,2)); $dbConfig = new Zend_Config_Ini(APPLICATION_PATH . '/configs/databases.ini', APPLICATION_ENV); $this->dbConfig = $dbConfig->db; } protected function sendError($code) { $message = 'Erreur inconnue'; if (array_key_exists($code, $this->listError)){ $message = $this->listError[$code]; } throw new SoapFault($code,$message); exit; } /** * Enregistre l'appel utilisateur à une méthode * @param $service * @param $siret * @param $ref * @return void */ protected function wsLog($service, $siret='', $ref='') { $iDbCrm = new WDB('sdv1'); if (strlen($siret)==14) { $siren=substr($siret,0,9); $nic=substr($siret,9,5); } elseif (strlen($siret)==9) { $siren=$siret; $nic=''; } $tabInsert = array ( 'login' => $this->tabInfoUser['login'], 'page' => $service, 'siren' => $siren, 'nic' => $nic, 'params' => $ref ); $rep = $iDbCrm->insert('logs', $tabInsert); } /** * Retourne une erreur soap lors d'une mauvaise authentification * @throws SoapFault */ protected function authenticate() { if (!$this->checkAuth( $_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'], $_SERVER['REMOTE_ADDR'])) { $this->sendError('0900'); } } protected function permission($perm) { if ( !$this->checkPerm($perm) ){ $this->sendError('0902'); } } /** * checkAccesWS * @throws SoapFault */ protected function checkAccesWS() { //Vérifier que l'utilisateur à le droit accesWS (clients/utilisateurs) $accesWs = $this->tabInfoUser['accesWS']; if ($accesWs){ $this->sendError('0901'); } } /** * checPerm * @param string $perm * @throws SoapFault */ protected function checkPerm($perm) { $droits = $this->tabInfoUser['droits']; $output = false; if ( preg_match('/\b'.$perm.'\b/i', $droits) ){ $output = true; } return $output; } /** * checkAuth * @param string $login * @param string $password * @param string $ipConnexion * @return boolean */ protected function checkAuth($login, $password, $ipConnexion) { $iDbCrm = new WDB('sdv1'); $rep = $iDbCrm->select(//'utilisateurs', 'login, id, email, password, idClient, typeCompte, filtre_ip, civilite, nom, prenom, tel, fax, mobile, profil, raisonSociale, siret, adrNum, adrIndRep, adrTypeVoie, adrLibVoie, adrCp, adrVille, adrComp, tel, fax, mobile, pref, profil, dateInscription, dateValidation, nombreConnexions, dateDerniereConnexion, droits, referenceParDefaut, nbReponses, formatMail, dateDebutCompte, dateFinCompte, maxFicheId', "login='$login' AND actif=1", true, MYSQL_ASSOC); 'utilisateurs u, clients c', 'u.login, u.id, u.email, u.password, u.idClient, u.typeCompte, u.actif, u.filtre_ip, u.civilite, u.nom, u.prenom, u.tel, u.fax, u.mobile, u.profil, u.raisonSociale, u.siret, u.adrNum, u.adrIndRep, u.adrTypeVoie, u.adrLibVoie, u.adrCp, u.adrVille, u.adrComp, u.tel, u.fax, u.mobile, u.pref, u.profil, u.dateInscription, u.dateValidation, u.nombreConnexions, u.dateDerniereConnexion, u.droits, u.referenceParDefaut, u.nbReponses, u.formatMail, u.dateDebutCompte, u.dateFinCompte, u.maxFicheId, c.droits AS droitsClients, c.timeout, c.typeScore', "u.login='$login' AND u.idClient=c.id AND u.actif=1 AND u.deleted=0 AND c.actif='Oui'", false, MYSQL_ASSOC); $tabRep = $rep[0]; if (count($rep)>0) { if ($tabRep['password']==$password || $tabRep['password']==md5($password) || $password==md5($login.'|'.$tabRep['password']) || (substr($password,0,7)=='iponly:' && checkPlagesIp($tabRep['filtre_ip'], substr($password,7)))) // Controle par IP { $timeOutSec=$tabRep['timeout']*60; if ($timeOutSec==0) $timeOutSec=1800; $this->tabInfoUser=array( 'login'=> $login, 'id'=> $tabRep['id'], 'email'=> $tabRep['email'], 'typeCompte'=> $tabRep['typeCompte'], 'idClient'=> $tabRep['idClient'], 'filtre_ip'=> $tabRep['filtre_ip'], 'ipPasserelle'=> '', 'ipConnexion'=> $ipConnexion, 'civilite'=> $tabRep['civilite'], 'nom'=> $tabRep['nom'], 'prenom'=> $tabRep['prenom'], 'raisonSociale'=> $tabRep['raisonSociale'], 'siret'=> $tabRep['siret'], 'adrNum'=> $tabRep['adrNum'], 'adrIndRep'=> $tabRep['adrIndRep'], 'adrTypeVoie'=> $tabRep['adrTypeVoie'], 'adrLibVoie'=> $tabRep['adrLibVoie'], 'adrCp'=> $tabRep['adrCp'], 'adrVille'=> $tabRep['adrVille'], 'adrComp'=> $tabRep['adrComp'], 'tel'=> $tabRep['tel'], 'fax'=> $tabRep['fax'], 'mobile'=> $tabRep['mobile'], 'pref'=> $tabRep['pref'], 'profil'=> $tabRep['profil'], 'dateInscription'=> $tabRep['dateInscription'], 'dateValidation'=> $tabRep['dateValidation'], 'nombreConnexions'=> $tabRep['nombreConnexions'], 'dateDerniereConnexion'=> $tabRep['dateDerniereConnexion'], 'droits'=> $tabRep['droits'], 'droitsClients'=> $tabRep['droitsClients'], 'timeout'=> $timeOutSec, 'nbReponses'=> $tabRep['nbReponses'], 'formatMail'=> $tabRep['formatMail'], 'referenceParDefaut'=> $tabRep['referenceParDefaut'], 'dateDebutCompte'=> $tabRep['dateDebutCompte'], 'dateFinCompte'=> $tabRep['dateFinCompte'], 'maxFicheId'=> $tabRep['maxFicheId'], 'typeScore' => $tabRep['typeScore'], ); debugLog('W',"CheckAuth $login/$password OK", __LINE__,__FILE__, __FUNCTION__, __CLASS__); return true; } debugLog('W',"CheckAuth $login/$password incorrect (IP=$ipConnexion)", __LINE__,__FILE__, __FUNCTION__, __CLASS__); return false; } debugLog('W',"CheckAuth $login/$password inexistant ou inactif (IP=$ipConnexion)", __LINE__,__FILE__, __FUNCTION__, __CLASS__); return false; } }