function custom_login_authentication($username, $password) {
// Set API endpoint URL
$url = "https://webapi.barecms.com/api/users/login";
$data = array(
'email' => $username,
'password' => $password
);
$json_data = json_encode($data);
// Initialize cURL session
$ch = curl_init();
// Set cURL options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json', 'Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
$response = curl_exec($ch);
// Close cURL session
curl_close($ch);
// Handle the API response
$response_data = json_decode($response, true);
var_dump($response_data);
var_dump($user);
if ($response_data && isset($response_data['success']) && $response_data['success'] === 1) {
// User login is successful, log them into WordPress
$user = get_user_by('email', $username);
if ($user) {
wp_set_auth_cookie($user->ID, true);
wp_set_current_user($user->ID, $username);
do_action('wp_login', $username);
}
} else {
// User login failed, handle the error
$error_message = "Invalid username or password.";
wp_redirect(wp_login_url() . '?login=failed&message=' . urlencode($error_message));
exit;
}
}
add_action('wp_authenticate', 'custom_login_authentication', 20, 2);
function custom_login_failed($username) {
$referrer = wp_get_referer();
// Redirect back to the login page with an error message
wp_redirect(add_query_arg('login', 'failed', $referrer));
exit;
}
add_action('wp_login_failed', 'custom_login_failed');
-
Welcome to WPSE! Please edit your question to let us know what specific problem you're having. What's the expected outcome? What's not working? Do you get any errors? Code-only questions aren't really questions.– Pat JMay 26 at 14:01
-
Please clarify your specific problem or provide additional details to highlight exactly what you need. As it's currently written, it's hard to tell exactly what you're asking.– Community BotJun 8 at 16:49
Add a comment
|