You are not logged in.
Bonjour,
J'importe mes postes dans GLPI avec les plugins DataInjection et Webservice. Avec la version 0.84.8 de GLPI, aucun problème cela fonctionnait correctement. Suite à la mise à jour en version 0.90.3 cela ne fonctionne plus...
Voici ma ligne de commande :
C:\php\php.exe c:\php\testwebservice.php --host=IP_DU_SERVEUR --url=/glpi/plugins/webservices/xmlrpc.php --username=NOM_DU_TECH --password=MDP_DU_TECH uri="/tmp/P44009.csv" --models_id=11 --entities_id=0
Et voici ce qu'elle me retourne :
xmlrpc error(16): Vous n'avez pas le droit d'accéder à ce modèle
Apparemment mon utilisateur n'a pas les droits sur les modèles. J'ai essayer d'importer mon csv directement depuis GLPI avec le même compte et cela fonctionne correctement.
Quelqu'un aurait une idée?
D'avance merci,
Bastien
Last edited by bastien.prost (2016-07-22 16:24:26)
Offline
Bonjour,
Après recherche mon erreur se situe sur les lignes suivantes dans le fichier webservice.class.php :
if (!$model->can($params['models_id'], 'r')) {
return PluginWebservicesMethodCommon::Error($protocol, WEBSERVICES_ERROR_NOTALLOWED,
__('You cannot access this model',
'datainjection'));
}
Je suppose que c'est là qu'il vérifie les droits de l'utilisateur sur les modèles... Pourtant mon utilisateur est super-admin et je ne rencontre pas de problème pour injecter un fichier via l'interface web.
Dans mon poste précédent j'ai oublié de préciser la version des plugins :
Injection de fichier : 2.4.1
services web : 1.6.0
Bastien
Offline
Je n'utilise pas le plugin webservices, mais as-tu vérifié si le profil Super-Admin a les droits sur les 2 plugins ?
Va dans : Administration > Profils > Super-Admin et check dans les onglets les droits qu'il a.
Offline
Bonjour,
Pour le plugin "Injection de fichiers" le profil super admin à tout les droits sur la gestion des modèles et à le droit de lecture sur l'importation du fichier. Ce sont les droits les plus élevés sur ce plugins.
Pour le plugin "Webservices", il n'y a pas de droits dans le profil. C'est directement dans le plugin qu'on peut définir quels sont les postes à partir desquels on peut utiliser le plugin. On peut aussi y renseigner le compte utilisateur autoriser à utiliser les services. J'ai vérifié tout est ok de ce côté là.
Merci quand même!
Bastien
Offline
Après recherche mon erreur se situe sur les lignes suivantes dans le fichier webservice.class.php :
if (!$model->can($params['models_id'], 'r')) {
return PluginWebservicesMethodCommon::Error($protocol, WEBSERVICES_ERROR_NOTALLOWED,
__('You cannot access this model',
'datainjection'));
}
Le plugin datainjection n'est pas bon car en 0.90 les droits 'r' n'existent plus.
Corrigé : https://forge.glpi-project.org/issues/5507
CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6 - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)
Offline
Bonjour,
Merci pour votre retour. J'ai effectué la mise à jour vers la version 2.4.2 du plugin.
En réexécutant ma commande, j'ai une nouvelle erreur :
xmlrpc error(15): Command failed (/var/www/glpi/files/_plugins/datainjection/PWSwjfWVk)
En recherchant dans le fichier php-errors.log j'ai retrouvé ceci :
PHP Warning(2): Missing argument 5 for PluginWebservicesMethodCommon::uploadDocument(), called in /var/www/glpi/plugins/datainjection/inc/webservice.class.php on line 115 and defined
Auriez-vous une idée d'où peut venir le problème?
D'avance merci,
Bastien
Offline
Oui. La méthode n'est pas appelée avec les bons paramètres.
Ticket ouvert sur la forge du plugin : https://github.com/pluginsGLPI/datainjection/issues/11
CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6 - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)
Offline
Bonsoir,
J'ai eu beau chercher, je n'ai pas réussi à trouver d'où peut venir mon erreur dans les paramètres... Si quelqu'un a une idée je suis preneur!
Merci,
Bastien
Offline
Bonjour,
J'ai finalement trouvé d'où venait le problème...
J'ai modifié la ligne $size = file_put_contents($filepath, $content); par $size = file_put_contents($filename, $content); dans le fichier methodcommon.class.php et tout est rentré dans l'ordre!
Bastien
Offline