2009-11-26 4 views
8

Sto lavorando su un portale basato su Wordpress che si integra con un e-commerce personalizzato. L'e-commerce funge anche da "pannello di controllo": tutti i ruoli sono impostati lì. Alcuni utenti sono registrati ma "inattivi"; non dovrebbero essere in grado di accedere a Wordpress. Per questo motivo ho bisogno di collegarmi al sistema di login di Wordpress.Come faccio ad agganciare il sistema di login di Wordpress per fermare alcuni utenti a livello di programmazione?

Se un utente è, ad esempio, "bad_james", non può accedere, anche se ha un accesso WP valido e PWD. Il pannello di amministrazione di WP non fornisce un flag per bloccare gli utenti.

C'è un modo per implementare un filtro di accesso?

Cheers,
Davide

risposta

9

è possibile sovraccaricare la funzione wp_authenticate (vedi la funzione nel codice qui: http://core.trac.wordpress.org/browser/trunk/wp-includes/pluggable.php) e restituire un WP_error se non si desidera consentire all'utente di accedere.

O meglio, utilizzare il filtro authenticate e restituire null se non si desidera che l'utente effettui il login, ad es.

add_filter('authenticate', 'check_login', 10, 3); 
function check_login($user, $username, $password) { 
    $user = get_userdatabylogin($username); 

    if(/* check to see if user is allowed */) { 
     return null; 
    } 
    return $user; 
} 
+7

Per fare in modo che il filtro funzioni, ho dovuto cambiare la priorità da 10 a 40. Il core WordPress ha alcuni filtri per l'autenticazione con priorità 20 e 30. L'impostazione della priorità su 40 assicura che il nostro filtro sia eseguito per ultimo . – joeljoeljoel

+1

get_userdatabylogin è deprecato. Dovrebbe cambiarlo in qualcosa come '$ user = get_user_by ('login', 'loginname');' – Cam

8

Ci sono stati alcuni problemi con risposta mjangda quindi sto postando una versione che funziona con WordPress 3.2

I problemi principali erano con l'istruzione return. Dovrebbe restituire un oggetto WP_User. L'altro problema era che la priorità non era abbastanza alta.

Problemi correlati