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