diff --git a/application/autoload_classmap.php b/application/autoload_classmap.php
index 3760053a..309af877 100644
--- a/application/autoload_classmap.php
+++ b/application/autoload_classmap.php
@@ -1,20 +1,20 @@
dirname(__FILE__) . '/Bootstrap.php',
- 'AideController' => dirname(__FILE__) . '/controllers/AideController.php',
- 'ArborescenceController' => dirname(__FILE__) . '/controllers/ArborescenceController.php',
- 'ComptageController' => dirname(__FILE__) . '/controllers/ComptageController.php',
- 'DashboardController' => dirname(__FILE__) . '/controllers/DashboardController.php',
- 'EnrichissementController' => dirname(__FILE__) . '/controllers/EnrichissementController.php',
- 'ErreurController' => dirname(__FILE__) . '/controllers/ErreurController.php',
- 'ErrorController' => dirname(__FILE__) . '/controllers/ErrorController.php',
- 'FieldsController' => dirname(__FILE__) . '/controllers/FieldsController.php',
- 'GestionController' => dirname(__FILE__) . '/controllers/GestionController.php',
- 'IndexController' => dirname(__FILE__) . '/controllers/IndexController.php',
- 'UploadController' => dirname(__FILE__) . '/controllers/UploadController.php',
- 'UserController' => dirname(__FILE__) . '/controllers/UserController.php',
- 'Zend_View_Helper_DataDate' => dirname(__FILE__) . '/views/default/helpers/DataDate.php',
- 'Zend_View_Helper_Field' => dirname(__FILE__) . '/views/default/helpers/Field.php',
- 'Zend_View_Helper_ProfileLink' => dirname(__FILE__) . '/views/default/helpers/ProfileLink.php',
+ 'Bootstrap' => dirname(__FILE__) . '//Bootstrap.php',
+ 'AideController' => dirname(__FILE__) . '//controllers/AideController.php',
+ 'ArborescenceController' => dirname(__FILE__) . '//controllers/ArborescenceController.php',
+ 'ComptageController' => dirname(__FILE__) . '//controllers/ComptageController.php',
+ 'DashboardController' => dirname(__FILE__) . '//controllers/DashboardController.php',
+ 'EnrichissementController' => dirname(__FILE__) . '//controllers/EnrichissementController.php',
+ 'ErreurController' => dirname(__FILE__) . '//controllers/ErreurController.php',
+ 'ErrorController' => dirname(__FILE__) . '//controllers/ErrorController.php',
+ 'FieldsController' => dirname(__FILE__) . '//controllers/FieldsController.php',
+ 'GestionController' => dirname(__FILE__) . '//controllers/GestionController.php',
+ 'IndexController' => dirname(__FILE__) . '//controllers/IndexController.php',
+ 'UploadController' => dirname(__FILE__) . '//controllers/UploadController.php',
+ 'UserController' => dirname(__FILE__) . '//controllers/UserController.php',
+ 'Zend_View_Helper_DataDate' => dirname(__FILE__) . '//views/default/helpers/DataDate.php',
+ 'Zend_View_Helper_Field' => dirname(__FILE__) . '//views/default/helpers/Field.php',
+ 'Zend_View_Helper_ProfileLink' => dirname(__FILE__) . '//views/default/helpers/ProfileLink.php',
);
diff --git a/application/controllers/UserController.php b/application/controllers/UserController.php
index 56787246..9fba7959 100644
--- a/application/controllers/UserController.php
+++ b/application/controllers/UserController.php
@@ -1,35 +1,32 @@
view->headLink()->appendStylesheet('/themes/default/styles/signin.css', 'all');
-
- //@todo : gestion des affichages particuliers pour les clients
$this->view->headTitle()->append('Connexion');
+
$form = new Application_Form_Login();
$this->view->form = $form;
$request = $this->getRequest();
- if ($request->isPost()) {
+ if ( $request->isPost() ) {
$formData = $request->getPost ();
- if ($form->isValid($formData)) {
+ if ( $form->isValid($formData) ) {
$login = $form->getValue('login');
$pass = $form->getValue('pass');
$auth = Zend_Auth::getInstance();
- $authAdapter = new Scores_AuthAdapter($login, md5($login.'|'.$pass));
- $result = $auth->authenticate($authAdapter);
- if (!$result->isValid()){
- $this->view->message = '';
- Zend_Registry::get('firebug')->info($result);
- foreach ($result->getMessages() as $message) {
- $this->view->message.= $message."
";
- }
+ $authAdapter = new Scores_Auth_Adapter_Ws($login, md5($login.'|'.$pass));
+ $result = $auth->authenticate($authAdapter);
+ if ( $result->isValid() ) {
+ $this->redirect('/');
} else {
- $this->_redirect('/');
+ $this->view->message = '';
+ foreach ($result->getMessages() as $message) {
+ $this->view->message.= $message."
";
+ }
}
}
}
diff --git a/library/Application/Controller/Plugin/Auth.php b/library/Application/Controller/Plugin/Auth.php
index 69e4e72c..38360d66 100644
--- a/library/Application/Controller/Plugin/Auth.php
+++ b/library/Application/Controller/Plugin/Auth.php
@@ -9,169 +9,204 @@ class Application_Controller_Plugin_Auth extends Zend_Controller_Plugin_Abstract
*/
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
+ $controller = $request->getControllerName();
+ $action = $request->getActionName();
+
$checkAuth = true;
- if ($request->getControllerName()=='user' &&
- ($request->getActionName()=='login' || $request->getActionName()=='logout') ) {
- $checkAuth = false;
+ // --- Pas d'authentification sur la demande d'authentification
+ if ( $controller == 'user' && in_array($action, array('login', 'logout')) ) {
+ $checkAuth = false;
}
+
- if ($checkAuth)
- {
+ if ($checkAuth) {
$login = $request->getParam('login');
$pass = $request->getParam('pass', '');
+
$hach = $request->getParam('hach');
- $checkIp = $request->getParam('checkIp');
+ if (!empty($hach)) {
+ $pass = $hach;
+ }
$auth = Zend_Auth::getInstance();
- //Est ce que l'on a checkIp=only lors de la requête
- $iponly = false;
- if ($checkIp=='only') {
- $hach = 'iponly:'.$_SERVER['REMOTE_ADDR'];
- $iponly = true;
- }
-
- //On vérifie le tout lors d'une connexion par url
+ // --- On vérifie le tout lors d'une connexion par url
if ( !empty($login) && !empty($hach) ) {
- $authAdapter = new Scores_AuthAdapter($login, $hach, $iponly);
+ $authAdapter = new Scores_Auth_Adapter_Ws($login, $pass);
$result = $auth->authenticate($authAdapter);
- if (!$result->isValid()) {
- $messageF = '';
- foreach ($result->getMessages() as $message) {
- $messageF.= $message."
";
- }
- $request->setModuleName('default')
- ->setControllerName('user')
- ->setActionName('logout')
- ->setParam('message', $messageF);
+ if ( $result->isValid() ) {
+
+ $storage = new Zend_Auth_Storage_Session();
+ $session = new Zend_Session_Namespace($storage->getNamespace());
+ //$session->setExpirationSeconds(86400);
+ $auth->setStorage($storage);
+
} else {
- $storage = new Zend_Auth_Storage_Session();
- $session = new Zend_Session_Namespace($storage->getNamespace());
- $auth->setStorage($storage);
+
+ $messageDisplay = "";
+ foreach ($result->getMessages() as $message) {
+ $messageDisplay.= $message."
";
+ }
+
+ $layout = Zend_Layout::getMVCInstance();
+ if ( $layout->isEnabled() ){
+ $request->setModuleName('default')
+ ->setControllerName('user')
+ ->setActionName('logout')
+ ->setParam('message', $messageDisplay);
+ } else {
+ echo $messageDisplay;
+ }
+
}
- //Sinon on reste sur le standard
+ // --- Sinon on reste sur le standard
} else {
$layout = Zend_Layout::getMVCInstance();
- //Authentifié => on met à jour la session
- if ( $auth->hasIdentity() && time() < $auth->getIdentity()->time ) {
-
- $identity = $auth->getIdentity();
- $identity->time = time() + $identity->timeout;
-
- if ( !isset($identity->dateContrat) && $layout->isEnabled() ) {
-
- //Get customer's params
- $paramsM = new Application_Model_CiblageCustomerParams();
- $sql = $paramsM->select()
- ->where('idClient = ?', $identity->idClient)
- //@todo : add service from WebService
- ->order('dateContrat DESC')->limit(1);
-
- $params = $paramsM->fetchAll($sql)->toArray();
- if (count($params)>0) {
- $identity->filterRNCS = $params[0]['filterRNCS'];
- $identity->licenceINSEE = $params[0]['licenceINSEE'];
- $identity->limitLines = $params[0]['limitLines'];
- $identity->limitFiles = $params[0]['limitFiles'];
- $identity->immediatExtract = $params[0]['immediatExtract'];
- $identity->dateContrat = $params[0]['dateContrat'];
- $identity->periodContrat = $params[0]['periodContrat'];
- $identity->priceLine = $params[0]['priceLine'];
- $identity->forfait = $params[0]['forfait'];
+ // --- Authentifié
+ if ( $auth->hasIdentity() ) {
+
+ // --- Mise à jour du délai de connexion
+ if ( time() < $auth->getIdentity()->time ) {
+
+ $identity = $auth->getIdentity();
+ $identity->time = time() + $identity->timeout;
+
+ // --- Vérification des paramètres du contrat
+ if ( $identity->dateContrat === null && $layout->isEnabled() ) {
+
+ // --- Get customer's params
+ $paramsM = new Application_Model_CiblageCustomerParams();
+ $sql = $paramsM->select()
+ ->where('idClient = ?', $identity->idClient)
+ //@todo : add service from WebService
+ ->order('dateContrat DESC')->limit(1);
+
+ $params = $paramsM->fetchRow($sql);
+ if ( $params !== null ) {
+ $identity->filterRNCS = $params->filterRNCS;
+ $identity->licenceINSEE = $params->licenceINSEE;
+ $identity->limitLines = $params->limitLines;
+ $identity->limitFiles = $params->limitFiles;
+ $identity->immediatExtract = $params->immediatExtract;
+ $identity->dateContrat = $params->dateContrat;
+ $identity->periodContrat = $params->periodContrat;
+ $identity->priceLine = $params->priceLine;
+ $identity->forfait = $params->forfait;
+ }
+
+ // --- Get user's preference
+ $prefsM = new Application_Model_CiblagePrefs();
+ $pref = $prefsM->find($identity->username)->current();
+ if ( $pref !== null ) {
+ $identity->preferences = json_decode($pref->json);
+ }
+
+ // --- Add a global value to join filterRNCS and preferences RNCS
+ if ( $identity->filterRNCS ) {
+ $identity->globalRNCS = 1;
+ }
+
+ if ( isset($identity->preferences->filter->rncs)
+ && $identity->preferences->filter->rncs ==1 ) {
+ $identity->globalRNCS = 1;
+ }
+
}
-
- //Get user's preference
- $prefsM = new Application_Model_CiblagePrefs();
- $pref = $prefsM->find($identity->username)->current();
- if ($pref) {
- $identity->preferences = json_decode($pref->json, true);
- }
-
- //Add a global value to join filterRNCS and preferences RNCS
- if ($identity->filterRNCS) {
- $identity->globalRNCS = 1;
- }
-
- if (isset($identity->preferences['filter']['rncs'])
- && $identity->preferences['filter']['rncs']==1) {
- $identity->globalRNCS = 1;
- }
- }
-
- //No contrat define
- if ( $identity->dateContrat=='0000-00-00 00:00:00' ) {
- //If no params are detected, display a message to contact support
- $request->setModuleName('default')
- ->setControllerName('aide')
- ->setActionName('message')
- ->setParam('typeMsg', 'support');
- }
- //Check dateContrat and calculate end of contrat
- else {
-
- $hour = intval(substr($identity->dateContrat,11,2));
- $min = intval(substr($identity->dateContrat,14,2));
- $sec = intval(substr($identity->dateContrat,17,2));
- $month = intval(substr($identity->dateContrat,5,2)) + $identity->periodContrat;
- $day = intval(substr($identity->dateContrat,8,2));
- $year = intval(substr($identity->dateContrat,0,4));
- $dateFinContrat = mktime($hour,$min,$sec,$month,$day,$year);
-
- if ( time() > $dateFinContrat ) {
+
+ // --- No contrat define
+ if ( $identity->dateContrat == '0000-00-00 00:00:00' || $identity->dateContrat === null ) {
+ // --- If no params are detected, display a message to contact support
$request->setModuleName('default')
- ->setControllerName('user')
- ->setActionName('logout')
- ->setParam('message', "Votre Contrat est arrivé à expiration.");
+ ->setControllerName('aide')
+ ->setActionName('message')
+ ->setParam('typeMsg', 'support');
}
-
+ // --- Check dateContrat and calculate end of contrat
+ else {
+
+ $hour = intval(substr($identity->dateContrat,11,2));
+ $min = intval(substr($identity->dateContrat,14,2));
+ $sec = intval(substr($identity->dateContrat,17,2));
+ $month = intval(substr($identity->dateContrat,5,2)) + $identity->periodContrat;
+ $day = intval(substr($identity->dateContrat,8,2));
+ $year = intval(substr($identity->dateContrat,0,4));
+ $dateFinContrat = mktime($hour,$min,$sec,$month,$day,$year);
+
+ if ( time() > $dateFinContrat ) {
+ $request->setModuleName('default')
+ ->setControllerName('user')
+ ->setActionName('logout')
+ ->setParam('message', "Votre Contrat est arrivé à expiration.");
+ }
+
+ }
+
+ // --- Sauvegarde des paramètres
+ $auth->getStorage()->write($identity);
+
+ // --- Activation profil SuperAdministrateur
+ if ( $identity->profil == "SuperAdministrateur" ) {
+ $view = $layout->getView();
+ $view->admin = true;
+ }
+
+ if (Zend_Session::namespaceIsset('login')){
+ Zend_Session::namespaceUnset('login');
+ }
+
}
-
- $auth->getStorage()->write($identity);
-
- if ( $identity->profil=="SuperAdministrateur" ) {
- $view = $layout->getView();
- $view->admin = true;
+ // --- Temps de connexion dépassé
+ elseif ( time() > $auth->getIdentity()->time ) {
+
+ $auth->clearIdentity();
+ $storage = $auth->getStorage();
+ Zend_Session::namespaceUnset($storage->getNamespace());
+
+ if ( !$request->isXmlHttpRequest() ) {
+ $session = new Zend_Session_Namespace('login');
+ $session->url = $_SERVER['REQUEST_URI'];
+ }
+
+ if ( $request->getControllerName()=='index' && $request->getActionName()=='index' ) {
+ $request->setModuleName('default')
+ ->setControllerName('user')
+ ->setActionName('login');
+ } else {
+ $request->setModuleName('default')
+ ->setControllerName('user')
+ ->setActionName('logout')
+ ->setParam('ajax', $request->isXmlHttpRequest());
+ }
+
}
+
+ }
+ // --- Pas Authentifié
+ else {
+
+ if ( $request->isXmlHttpRequest() ) {
- //Zend_Registry::get('firebug')->info($identity);
+ $request->setModuleName('default')
+ ->setControllerName('user')
+ ->setActionName('logout')
+ ->setParam('ajax', 1);
- if (Zend_Session::namespaceIsset('login')){
- Zend_Session::namespaceUnset('login');
- }
+ } else {
- } elseif ($auth->hasIdentity() && time() > $auth->getIdentity()->time ) {
+ $session = new Zend_Session_Namespace('login');
+ $session->url = $_SERVER['REQUEST_URI'];
- if ( $request->getControllerName()=='index' && $request->getActionName()=='index' ) {
- $request->setModuleName('default')
- ->setControllerName('user')
- ->setActionName('login');
- } else {
- $request->setModuleName('default')
- ->setControllerName('user')
- ->setActionName('logout')
- ->setParam('ajax', $request->isXmlHttpRequest());
- }
-
- } else {
-
- if ($request->isXmlHttpRequest()) {
- $request->setModuleName('default')
- ->setControllerName('user')
- ->setActionName('logout')
- ->setParam('ajax', 1);
- } else {
- $session = new Zend_Session_Namespace('login');
- $session->url = $_SERVER['REQUEST_URI'];
- $request->setModuleName('default')
- ->setControllerName('user')
- ->setActionName('login');
- }
+ $request->setModuleName('default')
+ ->setControllerName('user')
+ ->setActionName('login');
+ }
+
}
}
}
diff --git a/library/Application/autoload_classmap.php b/library/Application/autoload_classmap.php
index 6478b252..d2c324a8 100644
--- a/library/Application/autoload_classmap.php
+++ b/library/Application/autoload_classmap.php
@@ -1,26 +1,26 @@
dirname(__FILE__) . '/Controller/Plugin/Auth.php',
- 'Application_Controller_Plugin_Comptage' => dirname(__FILE__) . '/Controller/Plugin/Comptage.php',
- 'Application_Controller_Plugin_DataDate' => dirname(__FILE__) . '/Controller/Plugin/DataDate.php',
- 'Application_Controller_Plugin_Lang' => dirname(__FILE__) . '/Controller/Plugin/Lang.php',
- 'Application_Controller_Plugin_Menu' => dirname(__FILE__) . '/Controller/Plugin/Menu.php',
- 'Application_Form_Login' => dirname(__FILE__) . '/Form/Login.php',
- 'Application_Model_CiblageCodePostaux' => dirname(__FILE__) . '/Model/CiblageCodePostaux.php',
- 'Application_Model_CiblageComptages' => dirname(__FILE__) . '/Model/CiblageComptages.php',
- 'Application_Model_CiblageCriteres' => dirname(__FILE__) . '/Model/CiblageCriteres.php',
- 'Application_Model_CiblageCustomerParams' => dirname(__FILE__) . '/Model/CiblageCustomerParams.php',
- 'Application_Model_CiblageDepartements' => dirname(__FILE__) . '/Model/CiblageDepartements.php',
- 'Application_Model_CiblageEnrichissementIdentifiants' => dirname(__FILE__) . '/Model/CiblageEnrichissementIdentifiants.php',
- 'Application_Model_CiblageEnrichissementProfils' => dirname(__FILE__) . '/Model/CiblageEnrichissementProfils.php',
- 'Application_Model_CiblageFormeJuridique' => dirname(__FILE__) . '/Model/CiblageFormeJuridique.php',
- 'Application_Model_CiblageMinMax' => dirname(__FILE__) . '/Model/CiblageMinMax.php',
- 'Application_Model_CiblageNaf' => dirname(__FILE__) . '/Model/CiblageNaf.php',
- 'Application_Model_CiblagePrefs' => dirname(__FILE__) . '/Model/CiblagePrefs.php',
- 'Application_Model_CiblageRegions' => dirname(__FILE__) . '/Model/CiblageRegions.php',
- 'Application_Model_Sdv1Clients' => dirname(__FILE__) . '/Model/Sdv1Clients.php',
- 'Application_Model_Sdv1SphinxIdx' => dirname(__FILE__) . '/Model/Sdv1SphinxIdx.php',
- 'Application_Model_Sdv1Utilisateurs' => dirname(__FILE__) . '/Model/Sdv1Utilisateurs.php',
- 'Application_Model_Sdv1UtilisateursService' => dirname(__FILE__) . '/Model/Sdv1UtilisateursService.php',
+ 'Application_Controller_Plugin_Auth' => dirname(__FILE__) . '//Controller/Plugin/Auth.php',
+ 'Application_Controller_Plugin_Comptage' => dirname(__FILE__) . '//Controller/Plugin/Comptage.php',
+ 'Application_Controller_Plugin_DataDate' => dirname(__FILE__) . '//Controller/Plugin/DataDate.php',
+ 'Application_Controller_Plugin_Lang' => dirname(__FILE__) . '//Controller/Plugin/Lang.php',
+ 'Application_Controller_Plugin_Menu' => dirname(__FILE__) . '//Controller/Plugin/Menu.php',
+ 'Application_Form_Login' => dirname(__FILE__) . '//Form/Login.php',
+ 'Application_Model_CiblageCodePostaux' => dirname(__FILE__) . '//Model/CiblageCodePostaux.php',
+ 'Application_Model_CiblageComptages' => dirname(__FILE__) . '//Model/CiblageComptages.php',
+ 'Application_Model_CiblageCriteres' => dirname(__FILE__) . '//Model/CiblageCriteres.php',
+ 'Application_Model_CiblageCustomerParams' => dirname(__FILE__) . '//Model/CiblageCustomerParams.php',
+ 'Application_Model_CiblageDepartements' => dirname(__FILE__) . '//Model/CiblageDepartements.php',
+ 'Application_Model_CiblageEnrichissementIdentifiants' => dirname(__FILE__) . '//Model/CiblageEnrichissementIdentifiants.php',
+ 'Application_Model_CiblageEnrichissementProfils' => dirname(__FILE__) . '//Model/CiblageEnrichissementProfils.php',
+ 'Application_Model_CiblageFormeJuridique' => dirname(__FILE__) . '//Model/CiblageFormeJuridique.php',
+ 'Application_Model_CiblageMinMax' => dirname(__FILE__) . '//Model/CiblageMinMax.php',
+ 'Application_Model_CiblageNaf' => dirname(__FILE__) . '//Model/CiblageNaf.php',
+ 'Application_Model_CiblagePrefs' => dirname(__FILE__) . '//Model/CiblagePrefs.php',
+ 'Application_Model_CiblageRegions' => dirname(__FILE__) . '//Model/CiblageRegions.php',
+ 'Application_Model_Sdv1Clients' => dirname(__FILE__) . '//Model/Sdv1Clients.php',
+ 'Application_Model_Sdv1SphinxIdx' => dirname(__FILE__) . '//Model/Sdv1SphinxIdx.php',
+ 'Application_Model_Sdv1Utilisateurs' => dirname(__FILE__) . '//Model/Sdv1Utilisateurs.php',
+ 'Application_Model_Sdv1UtilisateursService' => dirname(__FILE__) . '//Model/Sdv1UtilisateursService.php',
);
diff --git a/library/Scores/Auth/Adapter/Db.php b/library/Scores/Auth/Adapter/Db.php
new file mode 100644
index 00000000..8772f87a
--- /dev/null
+++ b/library/Scores/Auth/Adapter/Db.php
@@ -0,0 +1,102 @@
+_username = $username;
+ $this->_password = $password;
+ $this->_hash = md5($username.'|'.$password);
+ $this->checkWs = $checkWs;
+ }
+
+ /**
+ * Limit access to only client IDs
+ * @param array $id
+ */
+ public function limitClient($id = null)
+ {
+ if (is_array($id) && count($id)>0) {
+ $this->clients = $id;
+ }
+ }
+
+ /**
+ * Override the timeout
+ * @param integer $seconds
+ */
+ public function setTimeout($seconds = null)
+ {
+ if ($seconds===null)
+ return;
+
+ $this->_timeout = $seconds;
+ }
+
+ /**
+ * (non-PHPdoc)
+ * @see Zend_Auth_Adapter_Interface::authenticate()
+ */
+ public function authenticate()
+ {
+ $userM = new Application_Model_Sdv1Utilisateurs();
+
+ $sql = $userM->select()
+ ->setIntegrityCheck(false)
+ ->from(array('u'=>'sdv1.utilisateurs'), array('u.idClient', 'u.id', 'u.login', 'u.password'))
+ ->join(array('c'=>'sdv1.clients'), 'u.idClient = c.id', array('c.timeout'))
+ ->where('u.login=?', $this->_username)
+ ->where('u.actif=?', 1)
+ ->where('u.deleted=?', 0)
+ ->where('c.actif=?','Oui');
+
+ if ( count($this->clients) > 0 ) {
+ $sql->where('u.idClient IN('.join(',',$this->clients).')');
+ }
+
+ if ($this->checkWs) {
+ $sql->where('u.accesWS=?',1);
+ }
+
+ $result = $userM->fetchRow($sql);
+
+ $identity = new stdClass();
+ $identity->username = $this->_username;
+ $identity->hash = $this->_hash;
+
+ if ( null === $result ) {
+ return new Zend_Auth_Result(Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND, $identity);
+ } else {
+ if ( $this->_password == $result->password
+ || $this->_password == md5($result->login.'|'.$result->password) ) {
+
+ $identity->id = $result->id;
+ $identity->idClient = $result->idClient;
+ $timeout = (!empty($result->timeout)) ? $result->timeout : $this->_timeout;
+ $identity->timeout = $timeout;
+ $identity->time = time() + $timeout;
+ return new Zend_Auth_Result(Zend_Auth_Result::SUCCESS, $identity);
+
+ } else {
+ return new Zend_Auth_Result(Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID, $identity);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/library/Scores/AuthAdapter.php b/library/Scores/Auth/Adapter/Ws.php
similarity index 69%
rename from library/Scores/AuthAdapter.php
rename to library/Scores/Auth/Adapter/Ws.php
index d748ece0..a35af696 100644
--- a/library/Scores/AuthAdapter.php
+++ b/library/Scores/Auth/Adapter/Ws.php
@@ -1,27 +1,71 @@
_username = $username;
$this->_password = $password;
- if ($iponly){
- $this->_password = 'iponly:'.$_SERVER['REMOTE_ADDR'];
+ if ($iponly){
+ $ip = $_SERVER['REMOTE_ADDR'];
+ if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && in_array($ip, $this->listProxyIp)) {
+ $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
+ }
+ $this->_password = 'iponly:'.$ip;
}
$this->_checkIp = $iponly;
}
+ /**
+ * (non-PHPdoc)
+ * @see Zend_Auth_Adapter_Interface::authenticate()
+ */
public function authenticate()
{
- $adressIp = $_SERVER['REMOTE_ADDR'];
+ $ip = $_SERVER['REMOTE_ADDR'];
+ if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && in_array($ip, $this->listProxyIp)) {
+ $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
+ }
$ws = new Scores_Ws($this->_username, $this->_password);
- $InfosLogin = $ws->getInfosLogin($this->_username, $adressIp);
+ $InfosLogin = $ws->getInfosLogin($this->_username, $ip);
$identity = new stdClass();
$identity->username = $this->_username;
$identity->password = $this->_password;
@@ -32,24 +76,33 @@ class Scores_AuthAdapter implements Zend_Auth_Adapter_Interface
$identity->droitsClients = $InfosLogin->result->droitsClients;
$identity->nom = $InfosLogin->result->nom;
$identity->prenom = $InfosLogin->result->prenom;
+ $identity->tel = $InfosLogin->result->tel;
+ $identity->fax = $InfosLogin->result->fax;
+ $identity->mobile = $InfosLogin->result->mobile;
+ $identity->id = $InfosLogin->result->id;
$identity->idClient = $InfosLogin->result->idClient;
$identity->reference = $InfosLogin->result->reference;
$identity->nbReponses = $InfosLogin->result->nbReponses;
+ $identity->typeScore = $InfosLogin->result->typeScore;
$identity->dateValidation = $InfosLogin->result->dateValidation;
+ $identity->nombreConnexions = $InfosLogin->result->nombreConnexions;
$identity->dateDerniereConnexion = $InfosLogin->result->dateDerniereConnexion;
- $identity->dateDebutCompte = $InfosLogin->result->dateDebutCompte;
+ $identity->dateDebutCompte = $InfosLogin->result->dateDebutCompte;
$identity->dateFinCompte = $InfosLogin->result->dateFinCompte;
- $identity->ip = $adressIp;
+ $identity->acceptationCGU = $InfosLogin->result->acceptationCGU;
+ $identity->ip = $ip;
+ $identity->version = $InfosLogin->result->version;
$identity->modeEdition = false;
$timeout = (!empty($InfosLogin->result->timeout)) ? $InfosLogin->result->timeout : $this->_timeout;
$identity->timeout = $timeout;
$identity->time = time() + $timeout;
-
+
$lang = in_array($InfosLogin->result->lang, array('fr','en')) ? $InfosLogin->result->lang : 'fr';
$identity->lang = $lang;
$identity->langtmp = $lang;
+
/*
* Adresse Ip interdites
*/
@@ -73,7 +126,7 @@ class Scores_AuthAdapter implements Zend_Auth_Adapter_Interface
}
// Renvoi
- if ( is_string($InfosLogin) || $InfosLogin->error->errnum!=0){
+ if ( is_string($InfosLogin) || $InfosLogin->error->errnum != 0 ) {
$message = $InfosLogin;
return new Zend_Auth_Result(Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID, $identity, array($message));
} elseif ($this->_username == $InfosLogin->result->login) {
@@ -84,9 +137,13 @@ class Scores_AuthAdapter implements Zend_Auth_Adapter_Interface
}
/**
- * Controle si une adresse IP est dans une liste des IP communiquées sous la forme 192.168.3.5-192.68.3.10;192.168.3.*;192.168.3.10
- * @param string $strPlageIP La plage d'adresses IP
- * @param string $adresseIP L'adresse IP à tester
+ * Controle si une adresse IP est dans une liste des IP communiquées sous la forme
+ * 192.168.3.5-192.68.3.10;192.168.3.*;192.168.3.10
+ * @param string $strPlageIP
+ * La plage d'adresses IP
+ * @param string $adresseIP
+ * L'adresse IP à tester
+ * @return boolean
*/
protected function checkPlagesIp($strPlageIP, $adresseIP)
{
@@ -134,7 +191,8 @@ class Scores_AuthAdapter implements Zend_Auth_Adapter_Interface
* @param string $ip Adresse IP
* @return integer
*/
- protected function getIpNumber($ip) {
+ protected function getIpNumber($ip)
+ {
$tab=explode('.', $ip);
return (($tab[0]*256*256*256) + ($tab[1]*256*256) + ($tab[2]*256) + ($tab[3]));
}
diff --git a/library/Scores/autoload_classmap.php b/library/Scores/autoload_classmap.php
index 81e9b592..ab57a770 100644
--- a/library/Scores/autoload_classmap.php
+++ b/library/Scores/autoload_classmap.php
@@ -1,10 +1,21 @@
dirname(__FILE__) . '/AuthAdapter.php',
- 'Ciblage' => dirname(__FILE__) . '/Ciblage.php',
- 'Enrichissement' => dirname(__FILE__) . '/Enrichissement.php',
- 'Scores_Fields' => dirname(__FILE__) . '/Fields.php',
- 'Mail' => dirname(__FILE__) . '/Mail.php',
- 'Scores_Ws' => dirname(__FILE__) . '/Ws.php',
+ 'Scores_Auth_Adapter_Db' => dirname(__FILE__) . '//Auth/Adapter/Db.php',
+ 'Scores_Auth_Adapter_Ws' => dirname(__FILE__) . '//Auth/Adapter/Ws.php',
+ 'Scores_Ciblage_Engine' => dirname(__FILE__) . '//Ciblage/Engine.php',
+ 'Scores_Ciblage_Extract' => dirname(__FILE__) . '//Ciblage/Extract.php',
+ 'Scores_Ciblage_Field_List' => dirname(__FILE__) . '//Ciblage/Field/List.php',
+ 'Scores_Ciblage_Field_Many' => dirname(__FILE__) . '//Ciblage/Field/Many.php',
+ 'Scores_Ciblage_Field_One' => dirname(__FILE__) . '//Ciblage/Field/One.php',
+ 'Scores_Ciblage_Field_Range' => dirname(__FILE__) . '//Ciblage/Field/Range.php',
+ 'Scores_Ciblage_Field_RangeDate' => dirname(__FILE__) . '//Ciblage/Field/RangeDate.php',
+ 'Scores_Ciblage_Field_RangeInput' => dirname(__FILE__) . '//Ciblage/Field/RangeInput.php',
+ 'Scores_Ciblage_Field_Search' => dirname(__FILE__) . '//Ciblage/Field/Search.php',
+ 'Scores_Ciblage_Field_Tag' => dirname(__FILE__) . '//Ciblage/Field/Tag.php',
+ 'Scores_Ciblage_Field_Tree' => dirname(__FILE__) . '//Ciblage/Field/Tree.php',
+ 'Scores_Ciblage_FieldList' => dirname(__FILE__) . '//Ciblage/FieldList.php',
+ 'Scores_Ciblage_Session' => dirname(__FILE__) . '//Ciblage/Session.php',
+ 'Mail' => dirname(__FILE__) . '//Mail.php',
+ 'Scores_Ws' => dirname(__FILE__) . '//Ws.php',
);