Регистрация, авторизация, изменение данных, удаление, выход пользователя, процессоры Modx Revolution

В MODX есть процесссоры, это php скрипты которые выполняют определенные функции. Они расположены по адресу /core/model/modx/processors

Регистрация пользователя

// Массив с данными пользователя    
$data = array(
    'username' => 'Иван',
    'fullname' => 'Иванов Иван Иванович',
    'email' => 'info@webapplex.ru',
    'phone' => '22-22-22',
    'fax' => '33-33-33',
    'city' => 'Москва',
    'active' => 1,
    // дополнительные поля
    'extended' => json_encode(array('bank'=> 'Сбербанк', 'account' => '40702810500000000001')),
    // отправлять письмо с паролем на почту
    'passwordnotifymethod' => 'e'
);
// запуск процессора
$response = $modx->runProcessor('/security/user/create', $data);
// если есть ошибки выводим ошибки, если нет то пользователь зарегистрирован
if ($response->isError()) {
       $errors = $response->response['errors'];
	    echo json_encode(array('flag' => 0, 'message' => $errors));
} else {
        echo json_encode(array('flag' => 1, 'message' => 'Пользователь зарегистрирован'));
}

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

$data = array(
    'username' => 'Иван',
    'password' => '12345678',
    'rememberme' => 1,
    'login_context' => 'web',
);  

$response = $modx->runProcessor('/security/login', $data);

if ($response->isError()) {
	    echo json_encode(array('flag' => 0, 'message' => $response->getMessage()));
} else {
        echo json_encode(array('flag' => 1, 'message' => 'Пользователь авторизован'));
}

Выход пользователя

$response = $modx->runProcessor('/security/logout');
if ($response->isError()) {
	    echo json_encode(array('flag' => 0, 'message' => $response->getMessage()));
} else {
        echo json_encode(array('flag' => 1, 'message' => 'Пользователь вышел'));
}

Изменение данных пользователя

$user = $modx->getObject('modUser', array('username' => 'Иван'));

if (is_object($user)) {
      
    $data = array(
        // поиск осуществляем по номеру пользователя
        'id' => $user->get('id'),
        // данные которые хотим изменить
        'username' => 'Дмитрий',
        'email' => 'test@test.ru',
        'fullname' => 'Дмитренко Дмитрий Дмитриевич',
        'city' => 'Санкт-Петербург',
    );
    
    $response = $modx->runProcessor('/security/user/update', $data);
    
    if ($response->isError()) {
    	   echo json_encode(array('flag' => 0, 'message' => $response->getMessage()));
    } else {
           echo json_encode(array('flag' => 1, 'message' => 'Данные пользователя обновлены'));
    }

} else {
    echo json_encode(array('flag' => 0, 'message' => 'Пользователя не существует'));
}    
    

Удаление пользователя

$user = $modx->getObject('modUser', array('username' => 'Дмитрий'));

if (is_object($user)) {
    // поиск пользователя по id
    $data = array('id' => $user->get('id'));
    $response = $modx->runProcessor('/security/user/delete', $data);
    
    if ($response->isError()) {
    	    echo json_encode(array('flag' => 0, 'message' => $response->getMessage()));
    } else {
            echo json_encode(array('flag' => 1, 'message' => 'Пользователь удален'));
    }
} else {
    echo json_encode(array('flag' => 0, 'message' => 'Пользователя не существует'));
}