Процессор resource/create или контроль доступа.
Доброе время суток. Задача с фронтэнда дать посльзователям создавать ресурс. Делаем формочку Formit, пишем под нее свой хук, в котором все из POST загоняем в процессор и создаем.
И все чудесно работает, если мы залогинены как админ. Что сделать, что бы неавторизованные пользователи могли создавать ресурсы?
Попробовал создать пользователя с админ правами и проходить авторизацию в скрипте.
Как это сделать? Может можно неавторизованным дать права на создание? Если да — то как? Вопросов много, ответа пока нет(.
p.s. Сложность всего этого в том, что это все крутится в интранете. И доступы до админки не дать посмотреть, и страничку не увидите. Общаться можем только кусками кода и скринами.
И все чудесно работает, если мы залогинены как админ. Что сделать, что бы неавторизованные пользователи могли создавать ресурсы?
$response = $modx->runProcessor('resource/create', array(
'pagetitle' => $title,
'longtitle' => $longtitle,
'introtext' => $name,
'content' => nl2br($content),
'template' => $template,
'publishedon' => DateTime::createFromFormat('Y-m-d', $date),
'published' => 0,
'parent' => $parent));
if ($response->isError()) {
$modx->log(xPDO::LOG_LEVEL_ERROR, 'There was a problem to create resource...');
$modx->log(xPDO::LOG_LEVEL_ERROR, $response->getMessage());
return $modx->error->failure($response->getMessage());
}Попробовал создать пользователя с админ правами и проходить авторизацию в скрипте.
// Логинимся в админку
$response = $modx->runProcessor('security/login', array('username' => 'frontend', 'password' => 'C6rRpPQm'));
if ($response->isError()) {
$modx->log(modX::LOG_LEVEL_ERROR, $response->getMessage());
return 0;
}
$modx->initialize('mgr');
// Создаем ресурс
$response = $modx->runProcessor('resource/create', array(
'pagetitle' => $title,
'longtitle' => $longtitle,
'introtext' => $name,
'content' => nl2br($content),
'template' => $template,
'publishedon' => DateTime::createFromFormat('Y-m-d', $date),
'published' => 0,
'parent' => $parent));
if ($response->isError()) {
$modx->log(xPDO::LOG_LEVEL_ERROR, 'There was a problem to create resource...');
$modx->log(xPDO::LOG_LEVEL_ERROR, $response->getMessage());
return $modx->error->failure($response->getMessage());
}Вот тут вообще ад. Прокликиваем несколько раз — и пропускает. Иногда пускает иногда нет.Как это сделать? Может можно неавторизованным дать права на создание? Если да — то как? Вопросов много, ответа пока нет(.
p.s. Сложность всего этого в том, что это все крутится в интранете. И доступы до админки не дать посмотреть, и страничку не увидите. Общаться можем только кусками кода и скринами.
Комментарии: 7
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
2 вариант. Сделать политику на основе AdministratorTemplate, включить нужные разрешения — для создания документа new_document, дать доступ анонимам к контексту web c этой политикой, и еще могут понадобиться add_children, new_document_in_root, publish_document
Или, еще лучше, создать свою Политику со списком необходимых разрешенных действий