Autentica??o usando API Externa
-
Estou tentando fazendo um plugin para autenticar usando uma api externa, mas n?o está registrando o novo usuário no sistema, podem me ajudar?
function alc_wp_auth( $user, $username, $password )
{
global $alc_wp_api_base_url;
// Certifique-se de que um nome de usuário e uma senha estejam presentes para que possamos trabalhar com eles
if($username == ” || $password == ”)
{
return;
}
if ( is_user_logged_in() )
{
wp_logout();
}
$creds = array (
‘user_login’ => $username,
‘user_password’ => $password,
‘remember’ => true,
);
$user = wp_signon ($creds, false);
if ( is_a( $user, ‘WP_User’ ) )
{
wp_set_current_user( $user->ID, $user->user_login );if ( is_user_logged_in() ) { return $user; } }
else
{$response = wp_remote_get( $alc_wp_api_base_url."/login/login?userName=".urlencode($username)."&password=".$password,array('timeout' => 120, 'httpversion' => '1.1')); $external = false; $ext_auth = alc_wp_response($response); if (!is_null($ext_auth)) { $external = true; } if( !$external ) { // User does not exist, send back an error message $user = new WP_Error( 'denied', __("ERROR: User/pass bad") ); } else { // External user exists, try to load the user info from the WordPress user table $userobj = new WP_User(); $user = $userobj->get_data_by( 'email', $ext_auth->email ); // Does not return a WP_User object :( $user = new WP_User($user->ID); // Attempt to load up the user with that ID if( $user->ID == 0 ) { // O usuário n?o existe atualmente na tabela de usuários do WordPress. // Você chegou a uma bifurca??o na estrada, escolha seu destino sabiamente // Se você n?o quiser adicionar novos usuários ao WordPress se eles n?o // já existirem, descomente a linha a seguir e remova o código de cria??o do usuário //$user = new WP_Error( 'denied', __("ERROR: Not a valid user for this system") ); // Configure as informa??es mínimas necessárias do usuário para este exemplo $userdata = array( 'user_email' => $ext_auth->email, 'user_login' => $ext_auth->email, 'first_name' => $ext_auth->name, 'last_name' => $ext_auth->name, ); $new_user_id = wp_insert_user( $userdata ); // A new user has been created // Carregue as novas informa??es do usuário $user = new WP_User ($new_user_id); } } } // Comente esta linha se você deseja recorrer à autentica??o do WordPress // útil para momentos em que o servi?o externo está offline
//remove_action(‘authenticate’, ‘wp_authenticate_username_password’, 20);
if ( is_a( $user, ‘WP_User’ ) )
{
wp_set_current_user( $user->ID, $user->user_login );if ( is_user_logged_in() ) { return $user; } } return $user; }
The page I need help with: [log in to see the link]
- You must be logged in to reply to this topic.