Выяснил причину.
Для версии 0.9.6 и выше надо использовать плагин:
//<?php
/**
* Manager2Web
* Synchronizes a web user account with a manager user accocunt
* Created by Raymond Irving May, 2005
* Modified to support MODx 0.9.6 by: Eol ([email protected])
*/
function updateWebUser($mngr) {
/**
* Updates an account
*/
global $modx;
$uid = $mngr['username'];
// check for existing account
$rs = $modx->dbQuery("SELECT * FROM ".$modx->getFullTableName("web_users")." WHERE username='$uid'");
$count = $modx->recordCount($rs);
$allowed = array("fullname","email","phone","mobilephone","blocked","blockeduntil","blockedafter",
"dob","gender","country","state","zip","fax","photo","comment");
$fields = array();
foreach($mngr as $key=>$value) {
if (in_array($key, $allowed)) {
$fields[$key] = $mngr[$key];
}
}
if ($count > 0) {
// update existing web account
$modx->updIntTableRow($fields, "web_user_attributes", " internalKey='".$web['id']."'");
$modx->updIntTableRow(array("password"=>$mngr["password"]), "web_users", " id='".$web["id"]."'");
$action = "Updated";
} else {
// create new account
$modx->putIntTableRow(array("username"=>$mngr["username"], "password"=>$mngr["password"]), "web_users");
$fields["internalKey"] = mysql_insert_id();
$modx->putIntTableRow($fields, "web_user_attributes");
$action = "Created";
//TODO -o Eol: send admin mail to new webuser
}
if (isset($action)) {
return "$action webuser: [$uid]";
} else {
return false;
}
}//function updateWebUser
$e = &$modx->Event;
switch ($e->name) {
case "OnUserFormSave":
if ($_POST["Manager2Web"]) {
$mgruserid = $e->params["id"];
$sql = "SELECT mu.username,mu.password, ma.*
FROM ".$modx->getFullTableName("manager_users")." mu
INNER JOIN ".$modx->getFullTableName("user_attributes")." ma ON ma.internalKey = mu.id
WHERE mu.id = '$mgruserid'";
$rs = $modx->dbQuery($sql);
if (!$rs) {
$msg = "Error querying database ".mysql_error();
$modx->logEvent(0, 3, $msg, $e->activePlugin);
} else {
$row = $modx->fetchRow($rs);
// update account
if ($msg = updateWebUser($row)) {
if ($logging) $modx->logEvent(0, 1, $msg, $e->activePlugin);
}
}
}
break;
case "OnUserFormRender":
$html = "<div class=\"sectionHeader\">Manager2Web</div>
<div class=\"sectionBody\">
<input type=\"checkbox\" name=\"Manager2Web\" value=\"1\" checked=\"checked\" />
Select this option to create/synchronize a web user account when saving.
</div>";
$e->output($html);
break;
}
//?>
Взято от сюда:
http://modxcms.com/forums/index.php?topic=5919
При этом использовать системные события:
- OnManagerSaveUser
- OnUserFormRender
- OnUserFormSave
Конфигурация плагина:
&logging=Info Logging;int;0
Плагин автоматически создает Web-user при создании менеджера и синхронизирует их.
Недостаток: не синхронизируются группы пользователей.
Остался один маленький вопрос. как сделать так чтобы при авторизации менеджера автоматически авторизовался синхронный с ним web-user?