20 require_once DOL_DOCUMENT_ROOT.
'/includes/restler/framework/Luracast/Restler/AutoLoader.php';
21 call_user_func(
function () {
22 $loader = Luracast\Restler\AutoLoader::instance();
23 spl_autoload_register($loader);
27 require_once DOL_DOCUMENT_ROOT.
'/includes/restler/framework/Luracast/Restler/iAuthenticate.php';
28 require_once DOL_DOCUMENT_ROOT.
'/includes/restler/framework/Luracast/Restler/iUseAuthentication.php';
29 require_once DOL_DOCUMENT_ROOT.
'/includes/restler/framework/Luracast/Restler/Resources.php';
30 require_once DOL_DOCUMENT_ROOT.
'/includes/restler/framework/Luracast/Restler/Defaults.php';
31 require_once DOL_DOCUMENT_ROOT.
'/includes/restler/framework/Luracast/Restler/RestException.php';
32 use \Luracast\Restler\iAuthenticate;
33 use \Luracast\Restler\iUseAuthentication;
34 use \Luracast\Restler\Resources;
35 use \Luracast\Restler\Defaults;
36 use \Luracast\Restler\RestException;
45 const REALM =
'Restricted Dolibarr API';
50 public static $requires = array(
'user',
'external',
'admin');
55 public static $role =
'user';
60 public static $user =
'';
89 $userClass = Defaults::$userIdentifierClass;
98 if (isset($_GET[
'api_key']))
101 $api_key = $_GET[
'api_key'];
103 if (isset($_GET[
'DOLAPIKEY']))
106 $api_key = $_GET[
'DOLAPIKEY'];
108 if (isset(
$_SERVER[
'HTTP_DOLAPIKEY']))
110 $api_key =
$_SERVER[
'HTTP_DOLAPIKEY'];
117 $sql =
"SELECT u.login, u.datec, u.api_key, ";
118 $sql .=
" u.tms as date_modification, u.entity";
119 $sql .=
" FROM ".MAIN_DB_PREFIX.
"user as u";
120 $sql .=
" WHERE u.api_key = '".$this->db->escape($api_key).
"'";
123 $result = $this->
db->query($sql);
126 if ($this->
db->num_rows($result))
128 $obj = $this->
db->fetch_object($result);
129 $login = $obj->login;
130 $stored_key = $obj->api_key;
131 $userentity = $obj->entity;
133 if (!defined(
"DOLENTITY") && $conf->entity != ($obj->entity ? $obj->entity : 1))
135 $conf->entity = ($obj->entity ? $obj->entity : 1);
137 dol_syslog(
"Entity was not set on http header with HTTP_DOLAPIENTITY (recommanded for performance purpose), so we switch now on entity of user (".$conf->entity.
") and we have to reload configuration.", LOG_WARNING);
138 $conf->setValues($this->
db);
142 throw new RestException(503,
'Error when fetching user api_key :'.$this->
db->error_msg);
145 if ($stored_key != $api_key) {
146 $userClass::setCacheIdentifier($api_key);
152 throw new RestException(503,
'Error when searching login user from api key');
154 $fuser =
new User($this->
db);
155 $result = $fuser->fetch(
'', $login,
'', 0, (empty($userentity) ? -1 : $conf->entity));
157 throw new RestException(503,
'Error when fetching user :'.$fuser->error.
' (conf->entity='.$conf->entity.
')');
160 static::$user = $fuser;
163 static::$role =
'external';
167 static::$role =
'admin';
170 throw new RestException(401,
"Failed to login to API. No parameter 'HTTP_DOLAPIKEY' on HTTP header (and no parameter DOLAPIKEY in URL).");
173 $userClass::setCacheIdentifier(static::$role);
174 Resources::$accessControlFunction =
'DolibarrApiAccess::verifyAccess';
175 $requirefortest = static::$requires;
176 if (!is_array($requirefortest)) $requirefortest = explode(
',', $requirefortest);
177 return in_array(static::$role, (array) $requirefortest) || static::$role ==
'admin';
200 $requires = isset($m[
'class'][
'DolibarrApiAccess'][
'properties'][
'requires'])
201 ? $m[
'class'][
'DolibarrApiAccess'][
'properties'][
'requires']
206 ? static::$role ==
'admin' || in_array(static::$role, (array) $requires)
static verifyAccess(array $m)
Verify access.
__construct()
Constructor.
Class to manage Dolibarr users.
$conf db
API class for accounts.
__isAllowed()
Check access.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename= '', $restricttologhandler= '', $logcontext=null)
Write log message into outputs.
__getWWWAuthenticateString()
Dolibarr API access class.
print $_SERVER["PHP_SELF"]
Edit parameters.