Авторизация пользователя на сайте

май 3 , 2015
Метки:

Если мы хотим добавить на сайт возможность регистрации и авторизации пользователей, то для этого существуют стандартные плагины вроде Login и Loginza. Но что если мы хотим полностью контролировать процесс авторизации пользователя на сайте? Тогда читаем, как это сделать

В статье Работа с пользователями через Modx API мы уже рассматривали, как получить список пользователей на сайте и добавить нового. В этой статье мы посмотрим, как реализовать авторизацию на сайте и разлогинивание. В Modx Revo есть замечательная штука под названием процессоры. Через них мы и реализуем нашу задумку.

Авторизация пользователя на сайте.


Этот код помещается во внешний файл, ему аяксом передаются 2 POST-параметра, username и password. Далее происходит проверка на существование пользователя и правильность введенного пароля. В случае ошибок возвращается соответствующий результат.
Как подключить Modx API во внешнем файле, читайте здесь

    try {
        if (!isset($_POST['username']) or !isset($_POST['password'])) {
            throw new Exception('Произошла ошибка. Не определены параметры');
        }
        
        $username = addslashes($_POST['username']);
        $password = addslashes($_POST['password']);
        $count = $modx->getCount('modUser', array('username' => $username));
        if($count == 0) {
            throw new Exception('Пользователь с таким номером не найден');
        }
        
        $resp = $modx->runProcessor('/security/login', array(
            'username' => $username,
            'password' => $password,
            'rememberme' => true
        ));
        if($resp->isError()) {
            throw new Exception('Неправильно введен пароль');
        }
        echo json_encode(array('code' => 0, 'message' => 'Пользователь авторизован'));
    } 
    catch (Exception $e) {
        echo json_encode(array('code' => -1, 'message' => $e->getMessage()));
    }

На стороне клиента принимаем ответ от сервера и в зависимости от кода возврата решаем, что делать с пользователем

Разлогинивание, выход пользователя.


Здесь совсем чуть-чуть

    try {
        $resp = $modx->runProcessor('/security/logout');
        if($resp->isError()) {
            throw new Exception('Неправильно введен пароль');
        }
        echo json_encode(array('code' => 0, 'message' => 'Пользователь вышел'));
    }
    catch (Exception $e) {
        echo json_encode(array('code' => -1, 'message' => $e->getMessage()));
    }
Метки:
Заходите в группу в контакте - https://vk.com/webdevkin
Анонсы статей, обсуждения интернет-магазинов, vue, фронтенда, php, гита.
Истории из жизни айти и обсуждение кода.
Как Вам статья? Оцените!