Авторизация пользователя на сайте
май
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, гита.
Истории из жизни айти и обсуждение кода.
Истории из жизни айти и обсуждение кода.