2011-06-01 20:19:40 +02:00
< ? php
/* Copyright ( C ) 2011 Laurent Destailleur < eldy @ users . sourceforge . net >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
2011-08-01 01:24:38 +02:00
* along with this program . If not , see < http :// www . gnu . org / licenses />.
2011-06-01 20:19:40 +02:00
* or see http :// www . gnu . org /
*/
/**
* \file htdocs / lib / ws . lib . php
2011-09-24 15:44:04 +02:00
* \ingroup webservices
2011-06-01 20:19:40 +02:00
* \brief Set of function for manipulating web services
*/
/**
* Check authentication array and set error , errorcode , errorlabel
2011-09-23 13:46:16 +02:00
*
2011-09-24 16:17:46 +02:00
* @ param array $authentication Array with authentication informations ( 'login' => , 'password' => , 'entity' => , 'dolibarrkey' => )
* @ param int & $error Number of errors
* @ param string & $errorcode Error string code
* @ param string & $errorlabel Error string label
* @ return User Return user object identified by login / pass / entity into authentication array
2011-06-01 20:19:40 +02:00
*/
2011-06-01 20:36:40 +02:00
function check_authentication ( $authentication , & $error , & $errorcode , & $errorlabel )
2011-06-01 20:19:40 +02:00
{
global $db , $conf , $langs ;
2011-09-23 13:46:16 +02:00
global $dolibarr_main_authentication , $dolibarr_auto_user ;
2011-06-01 20:19:40 +02:00
$fuser = new User ( $db );
if ( ! $error && ( $authentication [ 'dolibarrkey' ] != $conf -> global -> WEBSERVICES_KEY ))
{
$error ++ ;
$errorcode = 'BAD_VALUE_FOR_SECURITY_KEY' ; $errorlabel = 'Value provided into dolibarrkey entry field does not match security key defined in Webservice module setup' ;
}
2011-09-21 16:13:10 +02:00
if ( ! $error && ! empty ( $authentication [ 'entity' ]) && ! is_numeric ( $authentication [ 'entity' ]))
{
$error ++ ;
$errorcode = 'BAD_PARAMETERS' ; $errorlabel = " Parameter entity must be empty (or filled with numeric id of instance if multicompany module is used). " ;
}
2011-06-01 20:19:40 +02:00
if ( ! $error )
{
$result = $fuser -> fetch ( '' , $authentication [ 'login' ], '' , 0 );
2011-09-23 13:46:16 +02:00
if ( $result < 0 )
{
$error ++ ;
$errorcode = 'ERROR_FETCH_USER' ; $errorlabel = 'A technical error occurs during fetch of user' ;
}
else if ( $result == 0 )
{
$error ++ ;
$errorcode = 'BAD_CREDENTIALS' ; $errorlabel = 'Bad value for login or password' ;
}
2011-06-01 20:19:40 +02:00
2011-09-23 13:46:16 +02:00
// Validation of login
2011-09-21 16:13:10 +02:00
if ( ! $error )
{
2011-09-23 13:46:16 +02:00
// Authentication mode
if ( empty ( $dolibarr_main_authentication )) $dolibarr_main_authentication = 'http,dolibarr' ;
// Authentication mode: forceuser
if ( $dolibarr_main_authentication == 'forceuser' && empty ( $dolibarr_auto_user )) $dolibarr_auto_user = 'auto' ;
// Set authmode
$authmode = explode ( ',' , $dolibarr_main_authentication );
2011-06-01 20:19:40 +02:00
2011-09-23 13:46:16 +02:00
$login = checkLoginPassEntity ( $authentication [ 'login' ], $authentication [ 'password' ], $authentication [ 'entity' ], $authmode );
if ( empty ( $login ))
{
$error ++ ;
$errorcode = 'BAD_CREDENTIALS' ; $errorlabel = 'Bad value for login or password' ;
}
}
2011-06-01 20:19:40 +02:00
}
return $fuser ;
}
?>