掲示板

Come creare un utente specificando un determinato UserID?

9年前 に dario borsotti によって更新されました。

Come creare un utente specificando un determinato UserID?

New Member 投稿: 3 参加年月日: 15/01/16 最新の投稿
Sto usando Liferay 6.2

ho bisogno di associare ad un utente, o creare un utente nuovo, specificando un determinato valore di userID.
Ho visto che i servizi LR standard come addUser o updateUser non permettono di gestire questo parametro.
Esiste un modo per forzare l'associazione di un determinato valore di IDs ad uno user specifico?

In alternativa, come fa LR a scegliere l'ID che poi viene associato ed usato nelle varie tabelle di database?

grazie
thumbnail
9年前 に Daniele Baggio によって更新されました。

R: Come creare un utente specificando un determinato UserID?

Expert 投稿: 336 参加年月日: 08/12/05 最新の投稿
Direi di cambiare strada. La gestione dell'id dello user é fatta dai servizi e non puoi cambiarla (escludendo che andrai ad alterare i servizi).

Usa lo screenname oppure appoggia il tuo dato ad un custom attribute.

Daniele
@baxtheman


Sent from my Android device with Liferay.com Forums
9年前 に dario borsotti によって更新されました。

RE: R: Come creare un utente specificando un determinato UserID?

New Member 投稿: 3 参加年月日: 15/01/16 最新の投稿
La mia effettiva necessità è quella di migrare gli utenti presenti su un vecchio LR 5.1 a un LR 6.2.
La procedura di migrazione dei database è - a mio parere - un vero ginepraio. Non dovendo migrare altro che gli utenti (niente document library ecc) pensavo di sfruttare semplicemente i servizi di addUser...

La condizione necessaria che ho è però quella di mantenere inalterati gli IDs. Per questo stavo cercando di indagare sull'eventuale possibilità di forzare gli IDs degli utenti.

Mi rendo conto del rischio di dover andare a modificare i servizi, ma sto cercando di soppesare le eventuali alternative ad una migrazione standard.
Nel codice ho identificato il punto "cruciale", all'interno della funzione di addUser (che usa addUserWithWorkflow)

com.liferay.portal.service.impl.UserLocalServiceImpl #addUserWithWorkflow
long userId = counterLocalService.increment();

lavorando su questo punto dovrei poter non utilizzare il counter. L'unico dubbio che ho è se poi il virtual counter riesce a tenere in considerazione degli IDs forzatamente inseriti.
thumbnail
9年前 に Daniele Baggio によって更新されました。

RE: R: Come creare un utente specificando un determinato UserID?

Expert 投稿: 336 参加年月日: 08/12/05 最新の投稿
Tieni conto che non puoi alterare la firma dei servizi e quindi non puoi aggiungere un nuovo parametro userId al metodo addUser.
Prova così:

<dirty-code>
Modificare addUser tramite ext-plugin.
Per ottenere l'userid che vuoi devi inserire una logica interna al metodo che recuperi il valore da assegnare.
Finito l'import, vai nel database e alteri il counter specifco per gli utenti portandono abbastanza avanti.
</dirty-code>

..non mi assumo responsabilità su ciò che ho scritto....

@baxtheman