Autenticação usando API Externa
پاسخ ها: 0
من سعی می کنم یک افزونه برای احراز هویت با استفاده از API خارجی بسازم، اما کاربر جدید را در سیستم ثبت نمی کند، می توانید به من کمک کنید؟
تابع alc_wp_auth ($user، $username، $password)
{
جهانی $alc_wp_api_base_url;
// مطمئن شوید که یک نام کاربری و رمز عبور وجود دارد تا بتوانیم با آنها کار کنیم
if($username == ” || $password == ”)
{
بازگشت؛
}
if ( is_user_logged_in())
{
wp_logout();
}
$creds = آرایه (
'user_login' => $username,
'user_password' => $password,
'به خاطر بسپار' => درست است،
)
$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;
}
}
دیگر
{
$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;
}
این خبر را در ایران وب سازان مرجع وب و فناوری دنبال کنید
مشاهده پاسخ های این مطلب
———————————————
این مطلب از سایت انجمن وردپرس گردآوری شده است و کلیه حقوق مطلق به انجمن وردپرس می باشد در صورت مغایرت و یا بروز مشکل اطلاع دهید تا حذف گردد
منبع: انجمن وردپرس