Succede se si disinstalla e reinstalla lo user provider. Per sistemare bisogna eliminare gli utenti doppi (con user_id minore) e sostituire l'id vecchio con il nuovo nelle varie tabelle coinvolte.
I seguenti comandi confrontano l'username come chiave per capire se l'utente è lo stesso.
Nel caso in cui alla fine della procedura rimanessero ancora utenti "vecchi" perchè magari gli username non coincidevano è possibile modificare a mano l'username dei vecchi nella tabella userman_users, rendendoli uguali al corrispettivo nuovo e rilanciare tuttta la procedura.
Questo si puo' fare eseguendo da shell i seguenti comandi:
# Aggiorna i dispositivi telefonici associati all'utente (tabella rest_devices_phones)
mysql asterisk -e "UPDATE rest_devices_phones AS r INNER JOIN ( select b.id as oldid, a.id as newid ,a.username from userman_users a, userman_users b where a.id > b.id and a.username = b.username ) result_table ON result_table.oldid = r.user_id SET r.user_id = result_table.newid"
# Aggiorna l'associatzione utente-gruppo del CTI
mysql asterisk -e "UPDATE rest_cti_users_groups AS r INNER JOIN ( select b.id as oldid, a.id as newid ,a.username from userman_users a, userman_users b where a.id > b.id and a.username = b.username ) result_table ON result_table.oldid = r.user_id SET r.user_id = result_table.newid"
# Aggiorna gli id degli utenti nella tabella di FreePBX
mysql asterisk -e "update userman_users AS r INNER JOIN ( SELECT b.id as newid, a.id as oldid, a.default_extension as old_default_extension from userman_users a, userman_users b where a.id < b.id and a.username = b.username) result_table ON result_table.newid = r.id set r.default_extension = result_table.old_default_extension"
# Aggiorna i profili CTI con i nuovi id utente
mysql asterisk -e "UPDATE rest_users AS r INNER JOIN ( select b.id as oldid, a.id as newid ,a.username from userman_users a, userman_users b where a.id > b.id and a.username = b.username ) result_table ON result_table.oldid = r.user_id SET r.user_id = result_table.newid"
# Elimina i vecchi utenti da FreePBX
mysql asterisk -e "delete a from userman_users a, userman_users b where a.id < b.id and a.username = b.username"
# Elimina i vecchi utenti da NethVoice
mysql asterisk -e "delete from rest_users where user_id not in (select id from userman_users)"