Integration with existing user and group lists

leone

New member
Buongiorno,

Questo topic riguarda la "Integration with existing user and group lists".

Preciso che ho iniziato già la configurazione dell'applicazione (senza ancora integrare gli utenti), ma vorrei in seguito procedere all'integrazione di questa applicazione in WordPress, compresa l'integrazione degli utenti. NB le tabelle di dadabik sono installate nello stesso db di wordpress.

Dal manuale di installazione leggo quanto segue:

"To set DaDaBIK to use your own users and groups table, you have to configure the parameters starting with $users_table_ and $groups_table_ in /include/config.php;"

Prima di cominciare, ho considerato che:
- Tutte le granular permission in dadabik sino ad ora le ho basate sui due gruppi di base : admin e default.
- potrei aggiungere una colonna in wp_users e chiamala dababik_group con valore di default "2" alla registrazione di un nuovo utente. Il valore admin è cambiato manualmente.

Con queste premesse se dalla linea #191 io compilassi config.php come segue:

// the groups table is used just if $enable_granular_permissions = 1
$users_table_name = 'wp_users';
$users_table_id_field = 'ID'; // must be a numeric field and PK *** This is the user_id in WP table wp_users
$users_table_id_group_field = 'dadabik_group'; // must be a numeric field
$users_table_username_field = 'user_nice_name'; // must be a char/varchar field ***This is in the WP table wp_users
$users_table_password_field = 'user_pass'; // must be a char/varchar field *** This is the password field in WP table wp_users
$users_table_authentication_type_field = 'authentication_type_user';


1) Questo codice funzionerebbe per affrancarsi in toto dal dadabik_users, et dipendere solo da wp_users?
2) Immagino che le ultime due righe si possano trascurare se indico alla linea #165 $wordpress_authentication = 1;


Grazie e cordiali saluti!
Leone


You are using DaDaBIK version 8.2-Lerici enterprise, installed on 02-26-2018 (installation code: ["omissis"]), the latest version of DaDaBIK is 8.2-Lerici released on 12-19-2017
You are runnning the last release of DaDaBIK
PHP Version: 7.0.27
mysql version: 5.5.5-10.0.34-MariaDB
Web server: LiteSpeed
Client: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/604.5.6 (KHTML, like Gecko) Version/11.0.3 Safari/604.5.6
 

eugenio

Administrator
Staff member
Buongiorno Leone,
in realtà se abiliti l'autenticazione via Wordpress ($wordpress_authentication = 1) non devi fare nulla sui parametri $users_table_name, $users_table_id_field etc, devi solo sincerarti che gli utenti di DaDaBIK siano sincronizzati con quelli di Wordpress (o meglio, quelli di wordpress che vuoi far accedere a DaDaBIK):

"The same users (same username) need to be available both in Wordpress and DaDaBIK in order for this feature to work properly."

In pratica continui a tenere la tua tabella dadabik_users; quando arriva in DaDaBIK un utente che risulta loggato in Wordpress, se c'è un corrispondente utente (stesso username) in dadabik_users ottiene gli stessi permessi di quest'ultimo.

Fammi sapere se funziona tutto correttamente.

Saluti,
 

leone

New member
Grazie per la risposta.

Sì, in effetti nel modo descritto da te in effetti funziona tutto correttamente, ed è quel che ho fatto sino ad oggi.
L'unico neo è lo sviluppo di un plugin per WP per evitare di aggiungere manualmente in dadabik_users ogni utente che si registra con WP, e che deve anche tenere sotto controllo un eventuale cambio di email di un utente.

Per questo motivo avevo pensato di "dare in pasto" passare direttamente a dadabik tutta la wp_users.
 

eugenio

Administrator
Staff member
Ora ho capito meglio; sì, mi sembra una soluzione molto intelligente! E in effetti non ho testato ma se $wordpress_authentication le ultime due impostazioni non dovrebbero servire.

In pratica riassumendo: l'utente loggato su WP accede automaticamente a DaDaBIK senza doversi loggare, DaDaBIK controlla che ci sia una corrispondenza con la sua tabella utenti, ma la tabella utenti che dichiari è quella di WP stesso quindi la corrispondenza c'è per forza e non la devi tenere aggiornata.

Fammi sapere se funziona tutto come ti aspetti. Un problema potrebbe essere, in caso di aggiornamento di WP, quello di assicurarsi che l'aggiornamento non tocchi la tabella utenti (in particolare non cancelli la colonna che hai aggiunto).

Ciao,
 

leone

New member
Buongiorno Eugenio,

ritorno su questo topic. Finalmente oggi mi sono messo a provare questa soluzione, ma non sembra funzionare.

Ho notato che pur avendo modificato e salvato il file config.php come sopra, cioé indicado a dadabik dove cercare la tabella utenti ed il group_id, al momento del login (sia da dadabik che da wordpress) dadabik continua riconoscere solo i suoi utenti in dadabik_users e non quelli in wp_users. (per esempio continua a riconoscere solo alfonso e root).

Mi domando se parte della risposta non sia in quelle righe di spiegazione riguardo alle funzioni di hashing della password.

// If you use your own users table, consider that the password field $users_table_password_field must contain the hash of the password
// computed using phpass (see http://www.openwall.com/phpass/ for further details) and at the moment the field needs to have a length of at least 60 characters, but you can use your own hashing function customizing the functions check_password_hash() and create_password_hash() in general_functions.php

P.S. Nel frattempo sono passato a Monterosso. Super upgrade.
 

leone

New member
Chiedo venia: ho trovato che avevo fatto qualche errore. Continuo a provare e ti informo sull'esito finale prima di chiedere aiuto di nuovo :)
 

leone

New member
Ed ecco infatti adesso tutto funziona alla grande:
Dadabik utilizza correttamente gli utenti di wordpress, distinguendo tra admin e default users.

Ripeto che per applicare questa distinzione ho aggiunto una colonna a wp_users indicando se l'utente è 1 o 2. Di default il valore è 2, così che ogni nuovo utente iscritto è automaticamente un default user.


N.B.
Non so se il problema inizialmente riscontrato dipende anche da questo:

Durante l'installazione di dadabik in config.php avevo indicato l'opzione $tables_to_exclude[0]='wp_'; per guadagnare tempo e non dover in seguito disinnstallare a mano tutte le tabelle di wordpress.

Tuttavia quando poi ho settato l'opzione
// the groups table is used just if $enable_granular_permissions = 1
$users_table_name = 'wp_users';

Mi viene il dubbio che dadabik non leggesse la tabella wp_users a causa dell'opzione precedente.

In ogni caso dopo aver cambiato in $tables_to_exclude[0]=''; tutto funziona come ipotizzato in partenza, sono molto contento! :)
 

eugenio

Administrator
Staff member
Ciao,
intendi $prefixes_to_exclude, non $tables_to_exclude giusto ?

In teoria aver messo wp_ come prefisso da escludere non dovrebbe portarti a problemi di login con la tua tabella utenti custom (avente un nome che inizia con wp_), semplicemente non dovresti vedere la tabella users nel menu admin a sinistra però il login dovrebbe essere eseguito comunque.
 
Top