Integrare Drupal con Services

4 contenuti / 0 new
Ultimo contenuto
Integrare Drupal con Services

All'ultimo DrupalCon ho visto una sessione su Services: Drupal as a web services platform using the Services module - interessante per i miei scopi.

Uno dei problemi da affrontare per un sito intranet (usando Big D) era come integrarlo con altri applicativi dell'azienda - soprattutto con il meccanismo di gestione utenti - in questo caso controllato da un gestionale con interfaccia web.

Il problema è che non voglio che il manager aziendale devi creare (o modificare) un account sia sul gestionale che sul intranet. La soluzione era di usare Servces, in modo che il gestionale può 'pilotare' la creazione o aggiornamento degli utenti programmaticamente.

A questo scopo - e come banco di prova - ho creato un piccolo script command line che crea e modifica i ruoli di un utente. Questo basato su altri script esempio disponibile nel manualone di Drupal: http://drupal.org/node/585014#comment-2987512

Il gestionale accede al sito come forse un utente, con permessi di modificare utenti, e usando lo stesso meccanismo di credenziali di tutti gli altri utenti: identificatore di sessione, login, operazioni di modifica, logout.

John, ho trovato il tuo commento proprio l'altro giorno su Drupal.org. Il tuo codice fa esattamente quello che serviva anche a me!

Grazie!

(ora mi resta da farlo andare con content profile)

se riesco posto qui la modifica.

ciao!

Mario

Mario Vercellotti (Vermario)
Freelance
http://www.verdevelop.com

Ciao Mario,
Dato che stiamo 'collaborando' ;-) io invece devo aggiungere una funzione per trovare un certo utente...
Qualche osservazione che non avevo messo su d.o:

  1. Capire quale permessi devi dare a questi utenti 'remote' può essere frustrante - ho perso un ora prima di capire che ci vuoleva 'administer permissions' per cambiare i ruoli
  2. user.save usa le funzioni _validate e _submit, quindi (credo) tutto dev'essere una stringha. Non sta settando timezone probabilmente perchè setto 7200 come int, mi sa che devo mettere string. Però funzione 'status' come int, ma credo perchè viene convertito in boolean da PHP. Non ho osato provare boolean
  3. La chiamata user.get è abbastanza inutile IMHO, meglio per nome utente o e-mail. Non voglio che l'app esterno deve sapere l'uid del utente a priori.
  4. Ho visto che anche se il codice PHP prevede un codice di errore - 404 mi sembra giusto per un utente non esistente - torna invece sempre con il valore 1. Non ho trovato niente sul issue queue, è mi sembra un errore 'banale', mi domando se sono solo io?
  5. Bisogna 'inventare' nuovi nome per nuovi funzioni - ma credo che questo è una limite di XML-RPC, non Services. Quindi anche se mi piacerebbe usare user.get ma con parametro string per il nome o e-mail, devo trovare un altro nome, user.getby probabilmente.
  6. Non puoi abilitare/disabilitare specifici funzioni XML-RPC per specifici ruoli - pazienza
  7. Concurrency - non c'è! Può creare problemi difficile da comprendere/debuggare

Ho sollevato certi questi dubbi (sto imparando ;-) nel gruppo Services, vedi http://groups.drupal.org/node/70628 e http://groups.drupal.org/node/70638 Ovviamente se sei disponibile a dare una mano per i patch...

Allora uno dei maintainers mi ha chiesto di creare degli issues, quindi:

Se hai tempo di darlo un occhiata, magari migliorarlo...

John

Più imparo, più dubito.

jhl.verona wrote:

A questo scopo - e come banco di prova - ho creato un piccolo script command line che crea e modifica i ruoli di un utente. Questo basato su altri script esempio disponibile nel manualone di Drupal: http://drupal.org/node/585014#comment-2987512[/quote]

Ma straordinario!!!!
Erano giorni che ci stavo sbattendo la testa e non capivo...

Ti sarò infinitamente grato, mi hai agevolato e non di poco!
Mille grazie!!!!