authApp = 'extranet'; $this->authIp = $ip; break; case 'odea': $this->authApp = 'odea'; $this->authIp = $ip; break; case 'starlinks': $this->authApp = 'starlinks'; $this->authIp = $ip; break; } //Authentification des applications par login $this->authenticate(); //Check App authorization - Find Service parameters $serviceM = new Application_Model_Sdv1ClientsServices(); $sql = $serviceM->select() ->where('IdClient=?', $this->User->idClient) ->where('Code=?', $this->User->serviceCode); $serviceParams = $serviceM->fetchRow($sql); //Save information in database //id, clientId, userId, login, ip, userAgent, dateLogin //Retourne un minimum d'information pour les applications //login //civilite //nom //prenom //email //profil //pref //droits //typeScore //acceptationCGU } /** * Authentication by key * @param string $app */ protected function keyAuthenticate($app) { //Authentification par clé - @define $this->authApp = 'extranet'; //Reception du login //Reception de la clé (key:md5(login + '|' + key)) //Vérification nécessaire : application - enable - date debut - date fin } /** * Authentication by SSO * @param int $client * @param string $login * @param string $token * @param AuthParam[] $params * @throws SoapFault * @return boolean|string */ public function ssoAuthenticate($client, $login, $token, $params) { /** * login ? * nom@mon.tld => extract nom */ $part = strstr($login, '@', true); if ($part !== false) { $login = $part; } /** * Extract login from database */ $userM = new Application_Model_Sdv1Utilisateurs(); $sql = $userM->select() ->setIntegrityCheck(false) ->from(array('u'=>'utilisateurs'), array('u.login', 'u.idClient', 'u.actif',)) ->join(array('c'=>'clients'), 'u.idClient = c.id', array('c.actif AS clientActif')) ->joinLeft(array('s'=>'sdv1.utilisateurs_service'), 'u.login=s.login', array('Service AS serviceCode')) ->where('u.login=?', $login) ->where('c.id=?', $client); $result = $userM->fetchRow($sql); /** * Client disable */ if ( $result !== null && $result->clientActif == 'Non') { throw new SoapFault('SSO', 'Compte client inactif'); //Client désactivé } /** * No user */ if ( null === $result ) { return false; //Utilisateur inexistant } /** * User not activated */ if ( $result->actif == 0) { throw new SoapFault('SSO', 'Utilisateur non activé'); //Utilisateur non activé } /** * Process token */ $key = 'rh5s4z'; $maxTime = time() + (15 * 60); foreach ($params as $param) { if ($param->label == 'time') { $time = $params->value; } } /** * Limite de temps */ if ($time > $maxTime) { throw new SoapFault('SSO', 'Délai dépassé pour la connexion'); //Limite de temps dépassé pour la connexion } /** * Check token */ $data = $login . '/' . $time . '/' . $key; $internalToken = hash('sha256', $data); if ($internalToken == $token) { //Generate random password $hash = password_hash ( uniqid() , PASSWORD_BCRYPT ); $userM->update(array('password' => $hash), 'id='.$result->id); return $hash; } throw new SoapFault('SSO', 'Token invalide'); //Token invalide } /** * Liste des clients * @throws SoapFault * @return Client[] */ public function getClients() { $this->authenticate(); if ( $this->User->idClient != 1 ) { throw new SoapFault('ERR', 'Accès non authorisé'); } $clientM = new Application_Model_Sdv1Clients(); $sql = $clientM->select(true)->columns(array( 'nom AS Nom', 'LPAD(siren,9,0) AS Siren', 'LPAD(nic,5,0) AS Nic', 'IF(actif="Oui",1,0) AS Actif', 'IF(test="Oui",1,0) AS Test' ))->where('actif=?', 'Oui'); $result = $clientM->fetchAll($sql); if ( count($result) > 0 ) { foreach ( $result as $item ) { $client = new Client(); $client->Nom = $item->Nom; $client->Siren = $item->Siren; $client->Nic = $item->Nic; $client->Actif = $item->Actif; $client->Test = $item->Test; $clients[] = $client; } } return $clients; } /** * Information client * @param int $id * ID du client * @throws SoapFault * @return Client */ public function getClient($id = null) { $this->authenticate(); if ( $id === null || $this->User->idClient != 1 ) { $id = $this->User->idClient; } $clientM = new Application_Model_Sdv1Clients(); $sql = $clientM->select(true)->columns(array( 'nom AS Nom', 'LPAD(siren,9,0) AS Siren', 'LPAD(nic,5,0) AS Nic', 'IF(actif="Oui",1,0) AS Actif', 'IF(test="Oui",1,0) AS Test' ))->where('id=?', $id); $result = $clientM->fetchRow($sql); if ( $result === null ) { throw new SoapFault('ERR', 'Information client introuvable.'); } $client = new Client(); $client->Nom = $result->Nom; $client->Siren = $result->Siren; $client->Nic = $result->Nic; $client->Actif = $result->Actif; $client->Test = $result->Test; return $client; } /** * Information client avec la liste des services * @param int $id * ID du client * @throws SoapFault * @return ClientServices */ public function getClientServices($id = null) { $this->authenticate(); if ( $id === null || $this->User->idClient != 1 ) { $id = $this->User->idClient; } $clientM = new Application_Model_Sdv1Clients(); $sql = $clientM->select()->from($clientM, array( 'nom AS Nom', 'LPAD(siren,9,0) AS Siren', 'LPAD(nic,5,0) AS Nic', 'IF(actif="Oui",1,0) AS Actif', 'IF(test="Oui",1,0) AS Test' ))->where('id=?', $id); $result = $clientM->fetchRow($sql); if ( $result === null ) { throw new SoapFault('ERR', 'Information client introuvable.'); } $client = new ClientServices(); $client->Nom = $result->Nom; $client->Siren = $result->Siren; $client->Nic = $result->Nic; $client->Actif = $result->Actif; $client->Test = $result->Test; //Get Services $serviceM = new Application_Model_Sdv1ClientsServices(); $sql = $serviceM->select() ->from($serviceM, array('id', 'Code', 'Label', 'Editable', 'Active')) ->where('Deleted=?', 0) ->where('IdClient=?', $id); $result = $serviceM->fetchAll($sql); $services = array(); if (count($result) > 0) { foreach ($result as $item) { $clientService = new ClientServicesList(); $clientService->id = $item->id; $clientService->Code = $item->Code; $clientService->Label = $item->Label; $clientService->Editable = $item->Editable; $clientService->Active = $item->Active; $services[] = $clientService; } } $client->Services = $services; return $client; } protected function getContrats() { //Liste des contrats, par service résumé //Vérification des droits d'utilisation if ( $this->User->profil != 'Administrateur' ) { throw new SoapFault('ERR', 'Accès non authorisé'); } } protected function getContrat($id) { //Détail d'un contrat //Vérification des droits d'utilisation if ( $this->User->profil != 'Administrateur' ) { throw new SoapFault('ERR', 'Accès non authorisé'); } } /** * Liste des services * @param string $client * Id client * @return ServiceList[] */ public function getServices($client = null) { //Liste des services $this->authenticate(); if ( $client === null ) { $client = $this->User->idClient; } //Uniquement si l'utilisateur est administrateur et dans le service DEFAULT if ( $this->User->profil != 'Administrateur' ) { throw new SoapFault('ERR', 'Accès non authorisé'); } $serviceM = new Application_Model_Sdv1ClientsServices(); $sql = $serviceM->select() ->where('IdClient=?', $client) ->where('Deleted=0'); $result = $serviceM->fetchAll($sql); $services = array(); if ( count($result) > 0 ) { foreach ( $result as $item ) { $service = new ServiceList(); $service->id = $item->id; $service->IdClient = $item->IdClient; $service->Code = $item->Code; $service->Label = $item->Label; $service->TypeCompte = $item->TypeCompte; $service->TypeAcces = $item->TypeAcces; $service->TypeScore = $item->TypeScore; $service->Timeout = $item->Timeout; $service->Editable = $item->Editable; $service->Active = $item->Active; $service->DateInsert = $item->DateInsert; $service->DateUpdate = $item->DateUpdate; $services[] = $service; } } return $services; } /** * Détail d'un service * @param int $id * @throws SoapFault * @return Service */ public function getService($id) { $this->authenticate(); $client = $this->User->idClient; //Détail d'un service $serviceM = new Application_Model_Sdv1ClientsServices(); $sql = $serviceM->select() ->where('IdClient=?', $client) ->where('Deleted=?', 0) ->where('id=?', $id); $result = $serviceM->fetchRow($sql); if ( $result === null ) { throw new SoapFault('ERR', 'Service introuvable.'); } $output = new Service(); $output->id = $result->id; $output->Code = $result->Code; $output->Label = $result->Label; $output->TypeCompte = $result->TypeCompte; $output->TypeAcess = $result->TypeAcess; $output->TypeScore = $result->TypeScore; $output->Timeout = $result->Timeout; $output->Editable = $result->Editable; $output->Active = $result->Active; $output->DateInsert = $result->DateInsert; $output->DateUpdate = $result->DateUpdate; //Droits $output->Acces = array(); $serviceDroitsM = new Application_Model_Sdv1ClientsServicesDroits(); $sql = $serviceDroitsM->select() ->where('IdClient=?', $client) ->where('Service=?', $serviceCode); $result = $serviceDroitsM->fetchAll($sql); if ( count($result)>0 ) { foreach ( $result as $item ) { $acces = new AccesDetails(); $acces->Code = $item->Acces; $acces->Label = $this->listeDroits[$item->Acces]; $output->Acces[] = $acces; } } //IP $output->IP = array(); $serviceIPM = new Application_Model_Sdv1ClientsServicesIP(); $sql = $serviceIPM->select() ->where('IdClient=?', $client) ->where('Service=?', $serviceCode); $result = $serviceDroitsM->fetchAll($sql); if ( count($result)>0 ) { foreach ( $result as $item ) { $output->IP[] = $item->IP; } } return $output; } protected function getServiceConso($id){} protected function getServiceLogByFile(){} /** * Modification des éléments d'un service par un administrateur * @param string $code Element à modifier (label | active | delete) * @param mixed $value Valeur * @param string $id Id du service * @throws SoapFault * @return boolean */ public function setService($code, $value, $id) { $this->authenticate(); //Vérification des droits d'utilisation if ( $this->User->profil != 'Administrateur' ) { throw new SoapFault('ERR', 'Accès non authorisé'); } $client = $this->User->idClient; //Définir les éléments du service $serviceM = new Application_Model_Sdv1ClientsServices(); $sql = $serviceM->select() ->where('IdClient=?', $client) ->where('Deleted=?', 0) ->where('id=?', $id); $result = $serviceM->fetchRow($sql); if ( $result === null ) { throw new SoapFault('ERR', 'Service introuvable.'); } if ( $result->Editable == 0) { throw new SoapFault('MSG', "Impossible d'éditer le service"); } $data = json_decode($data); $dataToUpdate = array(); //Suppression d'un service if ( $code == 'delete' && $value==1 ) { $dataToUpdate = array('Deleted'=>1); } if ( $code == 'active' && in_array($value,array(0,1)) ) { $dataToUpdate = array('Active'=>$value); } if ( $code == 'label' && is_string($value) ) { $dataToUpdate = array('Label'=>$value); } if ( count($dataToUpdate) > 0 ) { $dataToUpdate['DateUpdate'] = date('Y-m-d H:i:s'); try { $serviceM->update($dataToUpdate, 'id='.$id); return true; } catch (Zend_Db_Exception $e) { if ($this->User->idClient==1) { throw new SoapFault('ERR', $e->getMessage()); } else { throw new SoapFault('ERR', "Application error"); } } } return false; } /** * Définit les paramètres d'un service * @param string $type * @param string $value * @param string $id * @throws SoapFault * @return boolean */ public function setServiceParam($type, $value, $id, $delete = false) { //Définir un paramètre du service $this->authenticate(); //Vérification des droits d'utilisation if ( $this->User->profil != 'Administrateur' ) { throw new SoapFault('ERR', 'Accès non authorisé'); } $client = $this->User->idClient; $serviceM = new Application_Model_Sdv1ClientsServices(); $sql = $serviceM->select() ->where('IdClient=?', $client) ->where('Deleted=?', 0) ->where('id=?', $id); $result = $serviceM->fetchRow($sql); if ( $result === null ) { throw new SoapFault('ERR', 'Service introuvable.'); } if ( $result->Editable == 0) { throw new SoapFault('MSG', "Impossible d'éditer le service"); } //Acces if ( $type == 'acces' ) { if ( in_array($value, $this->listeDroits) ) { } } //IP if ( $type == 'ip' ) { if ( $delete ) { } else { //Control de la plage IP ou de l'IP $validate = new Zend_Validate_Ip(); if ( $validate->isValid($value) ) { } } } return false; } /** * Liste des utilisateurs * @param int $actif (0|1) * @param string $service Code du service * @param string $client Id du client * @return UserList[] */ public function getUsers($actif = null, $service = null, $client = null) { //Liste des utilisateurs - filtre au service $this->authenticate(); if ( $client === null ) { $client = $this->User->idClient; } //Administrateur if ( !in_array($this->User->profil, array('Administrateur', 'SuperAdministrateur')) ) { throw new SoapFault('ERR', 'Accès non authorisé'); } //Administrateur d'un service if ( $this->User->Service != '' && $this->User->Service !== null && $this->User->Service !== 'DEFAULT' ) { $service = $this->User->Service; } try { $userM = new Application_Model_Sdv1Utilisateurs(); $sql = $userM->select() ->setIntegrityCheck(false) ->from(array('u'=>'sdv1.utilisateurs'), array('id','idClient','login','email','civilite','nom','prenom','actif','deleted')) ->joinLeft(array('s'=>'sdv1.utilisateurs_service'), 'u.login=s.login', array('Service')) ->joinLeft(array('sd'=>'sdv1.clients_services'), 'sd.Code=s.Service', array('Label')) ->where('u.idClient=?',$client); if ( $actif !== null && in_array($actif, array(0,1)) ) { $sql->where('u.actif=?', $actif); } $sql->where('u.deleted=?',0); if ($service == 'DEFAULT') { $sql->where('(s.Service IS NULL AND u.idClient='.$client.') OR (s.Service IS NOT NULL AND u.idClient='.$client.' AND u.idClient='.$client.' AND sd.idClient='.$client.') OR sd.Code="'.$service.'"'); } else if ( $service !== null ) { $sql->where('s.Service=?', $service); } $result = $userM->fetchAll($sql); } catch (Zend_Db_Exception $e) { if ($this->User->idClient == 1) { throw new SoapFault('ERR', $e->getMessage()); } else { throw new SoapFault('ERR', "Application error"); } } $users = array(); if (count($result) > 0) { foreach ($result as $item) { $user = new UserList(); $user->id = $item->id; $user->IdClient = $item->idClient; $user->ServiceCode = $item->Service; $user->ServiceLabel = $item->Label; $user->Login = $item->login; $user->Email = $item->email; $user->Civilite = $item->civilite; $user->Nom = $item->nom; $user->Prenom = $item->prenom; $user->Enable = $item->actif; $user->Delete = $item->deleted; $users[] = $user; } } return $users; } protected function getUsersByFile($actif = null, $service = null, $client = null) { } /** * Information Utilisateur * @param string $id * ID de l'utilisateur * @throws SoapFault * @return User */ public function getUser($id = null) { //Détail d'un utilisateur $this->authenticate(); $idClient = $this->User->idClient; if ( $id === null ) { $id = $this->User->id; } // Get Data try { $userM = new Application_Model_Sdv1Utilisateurs(); $sql = $userM->select()->from(array('u'=>'utilisateurs')) ->setIntegrityCheck(false) ->joinLeft(array('s'=>'sdv1.utilisateurs_service'), 'u.login=s.login', array('Service')) ->joinLeft(array('sd'=>'sdv1.clients_services'), 'sd.Code=s.Service', array('Label AS ServiceLabel')) ->where('u.id=?', $id); $user = $userM->fetchRow($sql); } catch (Zend_Db_Exception $e) { if ($this->User->idClient == 1) { throw new SoapFault('ERR', $e->getMessage()); } else { throw new SoapFault('ERR', "Application error"); } } if ( $user === null ) { throw new SoapFault('ERR', 'Utilisateur inexistant !'); } // Service $serviceCode = 'DEFAULT'; $serviceLabel = 'Standard'; if ( $user->Service !== null ) { $serviceCode = $user->Service; $serviceLabel = $user->ServiceLabel; } $output = new User(); $output->id = $user->id; $output->IdClient = $user->idClient; $output->ServiceCode = $serviceCode; $output->ServiceLabel = $serviceLabel; $output->Login = $user->login; $output->Email = $user->email; $output->Civilite = $user->civilite; $output->Nom = $user->nom; $output->Prenom = $user->prenom; $output->Enable = $user->actif; $output->Delete = $user->deleted; // Service - Droits $acces = array(); try { $droitsM = new Application_Model_Sdv1ClientsServicesDroits(); $sql = $droitsM->select()->where('IdClient=?', $idClient)->where('Service=?', $serviceCode); $droits = $droitsM->fetchAll($sql); } catch (Zend_Db_Exception $e) { if ($this->User->idClient == 1) { throw new SoapFault('ERR', $e->getMessage()); } else { throw new SoapFault('ERR', "Application error"); } } if ( count($droits) > 0 ) { foreach ($droits as $item) { $acces = new Acces(); $acces->Code = $item->Acces; $acces->Label = $this->listeDroits[$item->Acces]; $output->Acces[] = $acces; } } // Si l'utilisateur a pour Service = DEFAULT et pas de service DEFAULT alors droits de l'utilisateur if ( count($droits) == 0 ) { $droits = explode(' ', $user->droits); foreach ($droits as $item) { $acces = new Acces(); $acces->Code = $item; $acces->Label = $this->listeDroits[strtoupper($item)]; $output->Acces[] = $acces; } } // Service - IP try { $ipM = new Application_Model_Sdv1ClientsServicesIP(); $sql = $ipM->select()->where('IdClient=?', $idClient)->where('Service=?', $serviceCode); $ips = $ipM->fetchAll($sql); } catch (Zend_Db_Exception $e) { if ($this->User->idClient == 1) { throw new SoapFault('ERR', $e->getMessage()); } else { throw new SoapFault('ERR', "Application error"); } } if ( count($ips) > 0 ) { foreach ($ips as $item) { $output->IP[] = $item; } } return $output; } protected function getUserActivity($id = null) { //Retourner la liste des dernières connexions } /** * Emails secondaires * @param int $id * @throws SoapFault * @return string[] */ public function getUserEmail($id) { $this->authenticate(); $idClient = $this->User->idClient; try { $emailsM = new Application_Model_Sdv1UtilisateursEmails(); $sql = $emailsM->select() ->where('id=?', $id) ->where('idClient=?', $idClient); $result = $emailsM->fetchAll($sql); } catch (Zend_Db_Exception $e) { if ($this->User->idClient==1) { throw new SoapFault('ERR', $e->getMessage()); } else { throw new SoapFault('ERR', "Application error"); } } $emails = array(); if ( count($result)>0 ) { foreach ( $result as $item ) { $email = new Email(); $email->id = $item->id; $email->value = $item->email; $emails[] = $email; } } return $emails; } protected function getUserLogByFile($id){} /** * Définition d'un utilisateur * @param string $data * @param int $id * @throws SoapFault * @return boolean */ protected function setUser($data, $id = null) { $this->authenticate(); //Vérification des droits de création d'utilisateur if ( $this->User->id != $id || !in_array($this->User->profil, array('SuperAdministrateur', 'Administrateur')) ) { throw new SoapFault('ERR', 'Accès non authorisé'); } $infos = json_decode($data); $userM = new Application_Model_Sdv1Utilisateurs(); $userData = array( 'idClient', 'login', 'email', 'password' => '', 'actif' => 0, 'deleted' => 0, 'typeCompte' => 'PROD', 'filtre_ip' => '', 'civilite' => 'M', 'nom' => '', 'prenom' => '', 'raisonSociale' => '', 'siret' => '000000000', 'adrNum' => null, 'adrIndRep' => null, 'adrTypeVoie' => null, 'adrLibVoie' => '', 'adrCp' => null, `adrVille` => null, `adrComp` => '', 'tel' => '', 'fax' => null, 'mobile' => null, 'pref' => '', 'profil' => 'Utilisateur', 'dateInscription' => '0000-00-00 00:00:00', 'dateValidation' => '0000-00-00 00:00:00', 'nombreConnexions' => '0', 'dateDerniereConnexion' => '0000-00-00 00:00:00', 'droits' => '', 'referenceParDefaut' => '', 'nbReponses' => '020', 'lang' => null, 'formatMail' => 'txt1', 'lienExtranetMail' => 0, 'lienSurvFic' => 0, 'idSurvFic' => '', 'loginCptSurvFic' => '', 'listeEven' => '', 'dateDebutCompte' => null, 'dateFinCompte' => null, 'maxFicheId' => null, 'accesWS' => '0', 'rechRefType' => 'UTI', 'acceptationCGU' => null, ); if ( $id === null ) { $sql = $userM->select()->where('login=?', $infos->login); $row = $userM->fetchRow($sql); //Utilisateur existant if ( null !== $row ) { throw new SoapFault('ERR', "User exist"); } //Prepare data to insert foreach ($infos as $key => $value) { if (array_key_exists($key, $userData)) { $userData[$key] = $value; } } $userData['dateInsert'] = date('YmdHis'); try { $userM->insert($userData); } catch (Zend_Db_Exception $e) { return false; } //Définition du service $serviceM = new Application_Model_Sdv1UtilisateursService(); try { $serviceM->insert(array( 'login' => $infos->login, 'idClient'=> $infos->idClient, 'Service'=> $infos->Service )); } catch (Zend_Db_Exception $e) { return false; } //Tout est ok, envoi email de validation //@todo : sendEmail return true; } else { $sql = $userM->select()->where('id=?', $id); $row = $userM->fetchRow($sql); if ( null === $row ) { throw new SoapFault('ERR', "User doesn't exist"); } //Prepare data to update foreach ($row as $key => $value) { if (array_key_exists($key, $userData)) { $userData[$key] = $value; } } foreach ($infos as $key => $value) { if (array_key_exists($key, $userData)) { $userData[$key] = $value; } } try { $userM->update($userData, 'id='.$id); } catch (Zend_Db_Exception $e) { return false; } return true; } } /** * Création de compte client partenaire * @param unknown $data * @return boolean */ public function setUserSSO($data) { //Check IP application $ip = $_SERVER['REMOTE_ADDR']; if ( !in_array($ip, $this->listApplicationIp) ) { $this->sendError('0901'); } //Decodage $infos = json_decode($data); $userData = array( 'idClient', 'login', 'email', 'password' => '', 'actif' => 0, 'deleted' => 0, 'typeCompte' => 'PROD', 'filtre_ip' => '', 'civilite' => 'M', 'nom' => '', 'prenom' => '', 'raisonSociale' => '', 'siret' => '000000000', 'adrNum' => null, 'adrIndRep' => null, 'adrTypeVoie' => null, 'adrLibVoie' => '', 'adrCp' => null, `adrVille` => null, `adrComp` => '', 'tel' => '', 'fax' => null, 'mobile' => null, 'pref' => '', 'profil' => 'Utilisateur', 'dateInscription' => '0000-00-00 00:00:00', 'dateValidation' => '0000-00-00 00:00:00', 'nombreConnexions' => '0', 'dateDerniereConnexion' => '0000-00-00 00:00:00', 'droits' => '', 'referenceParDefaut' => '', 'nbReponses' => '020', 'lang' => null, 'formatMail' => 'txt1', 'lienExtranetMail' => 0, 'lienSurvFic' => 0, 'idSurvFic' => '', 'loginCptSurvFic' => '', 'listeEven' => '', 'dateDebutCompte' => null, 'dateFinCompte' => null, 'maxFicheId' => null, 'accesWS' => '0', 'rechRefType' => 'UTI', 'acceptationCGU' => null, ); //Prepare data to insert foreach ($infos as $key => $value) { if (array_key_exists($key, $userData)) { $userData[$key] = $value; } } $userData['password'] = password_hash ( uniqid() , PASSWORD_BCRYPT );; $userData['dateInsert'] = date('YmdHis'); //Insertion dans la base de données try { $userM = new Application_Model_Sdv1Utilisateurs(); $userM->insert($userData); } catch ( Zend_Db_Exception $e ) { return false; } //Définition du service $serviceM = new Application_Model_Sdv1UtilisateursService(); try { $serviceM->insert(array( 'login' => $infos->login, 'idClient'=> $infos->idClient, 'Service'=> $infos->Service )); } catch (Zend_Db_Exception $e) { return false; } //Tout est ok, envoi email de validation //@todo : sendEmail return true; } protected function setUserService($service, $id) { //Déplacer un utilisateur de service - ne pas activer tout de suite } public function setUserEmail($id, $email, $op = null) { //Which operation switch ( $op ) { //Ajouter un email secondaire case null: case 'add': break; //Supprimer un email secondaire case 'del': break; } } /** * Change password * @param string $password * @param int $id * @throws SoapFault * @return boolean */ public function setUserPassword($password, $id = null) { $this->authenticate(); if ( $id === null ) { $id = $this->User->id; } elseif ( $id !== null && $this->User->profil != 'Administrateur' ) { throw new SoapFault('ERR', 'Accès non authorisé'); } //@todo : Prise en compte de la version //Changer le mot de passe $userM = new Application_Model_Sdv1Utilisateurs(); $result = $userM->update(array('password'=>$password), 'id='.$id); if ( $result == 1 ) { return true; } return false; } public function getCategory() { $output = array(); foreach ( $this->listeCategory as $code => $desc ) { $c = new AccesCategory(); $c->Code = $code; $c->Label = $desc['label']; $c->Acces = $desc['droits']; $output[] = $c; } return $output; } protected function getAccess() { //Liste des accès - Code, Label, Category, Description, } protected function getPref() { //Liste des préférences - Code, Label, Description, Values } protected function setPref(){} /** * Acceptation des CGUs * @param string $app * @throws SoapFault * @return boolean */ public function setCGU($app = null) { $this->authenticate(); $id = $this->User->id; try { $userM = new Application_Model_Sdv1Utilisateurs(); $data = array('acceptationCGU' => date('YmdHis')); $result = $userM->update($data, 'id='.$idUser); } catch (Zend_Db_Exception $e) { throw new SoapFault('Erreur', $e->getMessage()); } catch (Zend_Exception $e) { throw new SoapFault('Erreur', $e->getMessage()); } if ( 1 == $result ) { return true; } return false; } protected function setUserEnable($id) { //Un administrateur force l'activation d'un utilisateur ? $userM = new Application_Model_Sdv1Utilisateurs(); //actif = 1 /** * L'utilisateur n'a pas reçu ou a perdu l'email avec son mot de passe, vous pouvez activez sont compte * (attention son email ne sera pas validé, et certaines prestations nécessitant un email valide ne peuvent fonctionner) */ } protected function setUserValidation($id) { //Un utilisateur valide son compte pour la première connexion et déclenche l'envoi de validation de l'email //Doit-on demander un nouveau mot de passe ? Est ce que le mot de passe a été générer et envoyé par email . $userM = new Application_Model_Sdv1Utilisateurs(); //actif = 0 //dateValidation pour email //Envoi email de validation //lien + email + login + date + hash ('sha256', string ) => string {idClient}{login}{email}{AAAAMMJJ} } protected function setUserEmailValidation($id) { //Validation d'un email //Email secondaire ajouté marqueur dateValidation } /** * Un SuperAdministrateur devenir un utilisateur (pour les tests) * @param int $id * @throws SoapFault */ protected function setAdminAs($id) { $this->authenticate(); //Vérification des droits d'utilisation if ( $this->User->profil != 'SuperAdministrateur' ) { throw new SoapFault('ERR', 'Accès non authorisé'); } // Pour les SuperAdministrateur, voir l'application comme un login (id) } }