web-dev-qa-db-fra.com

Refuser à un rôle d'utilisateur de se connecter après l'enregistrement

J'ai un site où les clients peuvent s'inscrire eux-mêmes (ils ont un rôle d'utilisateur "en attente"). Cependant, ce que je veux, c'est qu'après cet enregistrement, ces rôles d'utilisateur ne puissent plus se connecter ou se déconnecter automatiquement. Ils ne doivent pas non plus pouvoir se connecter. La connexion doit donc être refusée pour ce rôle d'utilisateur.

1
Arnolddew

Ce que vous voulez faire, c'est accrocher le crochet authenticate, vérifier si l'utilisateur a le rôle pending et, le cas échéant, renvoyer une erreur.

//* Add filter to the authenticate hook
add_filter( 'authenticate', 'wpse_263762_authenticate', 20, 3 );
function wpse_263762_authenticate( $user, $username, $password ) {
  //* Check if the user has the pending role
  if( ! is_wp_error( $user ) && in_array( 'pending', $user->roles ) ) {
    //* Throw an error
    $error = new WP_Error();
    $errorMessage = __( 'Your error message goes here.' );
    $error->add( 401, $errorMessage );
    return $error;
  }
  //* Or return the user
  return $user;
}
2
Nathan Johnson