var form = $(this),
data = form.serializeObject();
$.post(
allbriz.ajaxurl,
data,
function(response){
if(response.result == 'OK') {
window.location.href = response.url;
} else {
// Вывод ошибки
},
'json'
).fail(function(xhr, status, error) {
console.log(xhr, status, error);
});
function ajax_handle_login() {
$result = array( 'result' => 'OK', 'url' => home_url('/') );
$data = $_POST;
$remember = false;
$matches = array();
preg_match('/.*redirect=([^&]+).*/ui', $_SERVER['HTTP_REFERER'], $matches);
if(!empty($matches)) {
$result['url'] = home_url(urldecode($matches[1]));
}
if(isset($data['remember-me'])) {
$remember = true;
}
//Блок валидации
check_ajax_referer( 'login', 'security', true );
// если введен логин, то ищем почту
if ( !is_email( $data['email'] ) )
$user = get_user_by( 'login', $data['email']);
// получаем ID пользователя
if ( is_email( $data['email'] ) )
$user = get_user_by( 'email', $data['email'] );
if ( is_user_logged_in() || !$user || !wp_check_password( $data['password'], $user->data->user_pass, $user->ID)) {
$result = array('result' => 'ERROR', 'message' => 'Неверный e-mail или пароль');
} else {
//Авторизуем
/* Этот вариант приводит к тому же результату
nocache_headers();
wp_clear_auth_cookie();
wp_set_auth_cookie($user->ID, $remember);
*/
$info = array();
$info['user_login'] = $user->user_login;
$info['user_password'] = $data['password'];
$info['remember'] = $remember;
$user_signon = wp_signon( $info, false );
if ( is_wp_error($user_signon) ) {
$result = array('result' => 'ERROR', 'message' => 'Ошибка авторизации');
die(json_encode($result));
}
}
die(json_encode($result));
}