Site icon Tosolini.info

WordPress: utilizzare la email come login

A mio parere personale il sistema di login di WordPress è costruito in modo discretamente ottimale. Se non altro viene validato l’indirizzo di posta elettronica per gli utenti che intendono iscriversi. Una cosa scontata penseranno in molti, purtroppo non è così. Ma la funzione che andremo a svelare quest’oggi fa riferimento a richieste del tipo “eh, ma io non ricordo mai la mia username, non sarebbe meglio utilizzare l’indirizzo e-mail?“. Ovviamente sarebbe meglio di no, poiché disaccoppiare l’indirizzo di posta elettronica con una username aggiunge un piccolissimo livello di sicurezza in più. Un attaccante infatti potrebbe non avere troppa difficoltà a scoprire l’indirizzo email e concentrarsi in questo modo solo sulla password.

Ad ogni modo, alle utenze dei vostri clienti è altamente probabile che finché non ci sbattano il naso contro di queste argomentazioni non siano granché interessati. E quindi vediamo come accontentarli nostro malgrado visto che WordPress è talmente flessibile che si può fare anche questo.

Infatti esiste una funzione Hook (gancio) che risponde al nome di  wp_authenticate. Solo per la cronaca esiste anche una funzione core con lo stesso nome, ma serve ad esempio a creare delle personalizzazioni nei plugin. Ovviamente la prima, rispetto alla seconda è solo richiamabile e non presenta opzioni.

Passiamo a vedere il codice, che andrà inserito all’interno di functions.php del vostro tema.


add_action( 'wp_authenticate', 'wp_authenticate_by_email' );

function wp_authenticate_by_email( $username ) {
$user = get_user_by( 'email', $username );

if ( empty( $user ) ) {
return;
}

return $user->user_login;
}

La prima riga vediamo la nostra funzione Hook a cui  viene agganciata la seconda come argomento.
La funzione wp_authenticate_by_email modella la variabile $user attraverso la funzione core get_user_by a cui assegna il campo email il valore, in questo caso una variabile, $username.
Segue una verifica affinché la variabile $user non sia vuota e poi procede a riscrivere il campo user_login presente nella Hook function in wp_authenticate.

Conclusioni

Ancora una volta abbiamo visto come WordPress mette a disposizione dei ganci (Hook) all’interno del proprio codice per poter personalizzare anche in modo consistente funzioni base come quella del login.

Exit mobile version