Из 1С передаю данные посредством post ошибка 405 Not Allowed

  • 6 Ответов
  • 198 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

xDD

  • ****
  • 286
  • 4
Задача отправить из 1с запрос  post и обработать его на сайте, в 1с все сделано. Запрос посылается.

Если подключаюсь, через 1с, то получаю  405 Not Allowed,
но если вбиваю строку в браузере
Код
administrator/index.php?option=com_jshopping&controller=products&task=uploadfoto&product_id=1
то все получается

Доработал контроллер на бекэнд
public_html/administrator/components/com_jshopping/controllers/products
дописал свой метод "uploadfoto"

Код в контроллере компонента jshopping
Код
 public  function uploadfoto(){
       // $jshopConfig = JSFactory::getConfig();
        //require_once($jshopConfig->path.'lib/image.lib.php');
       // require_once($jshopConfig->path.'lib/uploadfile.class.php');
        

        //$dispatcher = JDispatcher::getInstance();

        $db = JFactory::getDBO();
        $post = JRequest::get('post');
      $_products = JSFactory::getModel("products");
        $product = JSFactory::getTable('product', 'jshop');
        $_alias = JSFactory::getModel("alias");
        $_lang = JSFactory::getModel("languages");

 var_dump($db);
       var_dump($post);
        var_dump($_products);
        var_dump($product);
        var_dump($_alias);
        var_dump($_lang);
        var_dump($id_vendor_cuser);
        var_dump($product_id);





Из 1c отправляю на сайт сообщение вида

Код
--b863a1db46a2481c9bc5e4969613adfd
Content-Disposition: form-data; name="datafile"; filename="product_image_1"
Content-Type: application/x-octet-stream

"двочные данные текст текст текст"

--b863a1db46a2481c9bc5e4969613adfd
--b863a1db46a2481c9bc5e4969613adfd
Content-disposition: form-data; name="decode"

1
--b863a1db46a2481c9bc5e4969613adfd
--b863a1db46a2481c9bc5e4969613adfd--


Я так понимаю мне как-то надо залогиниться в Joomla, может что-то еще надо дописать в запрос для сервера?
Подскажите кто сталкивался пжлст

картинка для наглядности
https://gyazo.com/a272ad5c1566508bf816509aa3c14dd5
« Последнее редактирование: 03.03.2017, 13:04:11 от xDD »
Умные исправляют ошибки, мудрые их недопускают =)

*

xDD

  • ****
  • 286
  • 4
Создал файл Foto.php описал в нем  JshoppingControllerFoto в нем описал метод
Код
public  function uploadfoto(){
        $post = JRequest::get('post');
        var_dump($post);
, разместил на /public_html/components/com_jshopping/controllers стучусь к нему через 1с по адресу http://сайт/component/jshopping/Foto

посылаю в post

Код
--b863a1db46a2481c9bc5e4969613adfd
Content-Disposition: form-data; name="datafile"; filename="product_image_1"
Content-Type: application/x-octet-stream

/здесь двоичный код картинки/
--b863a1db46a2481c9bc5e4969613adfd
--b863a1db46a2481c9bc5e4969613adfd
Content-disposition: form-data; name="login"

itsmylogin
--b863a1db46a2481c9bc5e4969613adfd
Content-disposition: form-data; name="password"

53634643
--b863a1db46a2481c9bc5e4969613adfd
--b863a1db46a2481c9bc5e4969613adfd--


В итоге все работает, то есть через контроллер фронтэнда получаю данные, но я хочу получать данные через контроллер бекэнда то есть сначала залогиниться  а потом уже работать с  данными в моделе.
Подскажите что делаю не так?
Как залогинться при посылке запроса не сервер через пост в Joomla?
Умные исправляют ошибки, мудрые их недопускают =)

*

SmokerMan

  • ********
  • 5329
  • 689
Как залогинться при посылке запроса не сервер через пост в Joomla?
никак, если надо можно проверить на фронте, вот пример кода
Код
    protected function authenticateUser($username, $password)
    {
        $admin_group_id = 10;
        jimport('joomla.user.authentication');
        $auth = JAuthentication::getInstance();
        $credentials = array(
            'username' => $username,
            'password' => $password
        );
        $options = array();
        $response = $auth->authenticate($credentials, $options);
       
        if ($response->status !== 1) {
            die($response->error_message);
        }
       
        $user = JUser::getInstance(JUserHelper::getUserId($username));
        if (! in_array($admin_group_id, $user->groups)) {
            die('Не достаточно прав у пользователя');
        }
       
        return $user->id;
    }


*

xDD

  • ****
  • 286
  • 4
То есть пользоваться контроллерами, которые доступны только в админ панели посредством  http запросов я не смогу?

Получается что мне придется посылать запрос на контроллеры сайта посылать логин и пароль и смотреть можно ли мне запускать мои методы?
Умные исправляют ошибки, мудрые их недопускают =)

*

SmokerMan

  • ********
  • 5329
  • 689
да, ну или можно отдельно отправлять запрос на авторизацию в админку, получать куку и потом запросы передавать с этой кукой

*

xDD

  • ****
  • 286
  • 4
А как получать куку?
Умные исправляют ошибки, мудрые их недопускают =)

*

xDD

  • ****
  • 286
  • 4
Написал модель class JshoppingModelFoto  добавил файл Foto.php в //public_html/components/com_jshopping/models/
В контроллере JshoppingControllerFoto в методе  uploadfoto, хочу получить модель
Код
  $_products = JSFactory::getModel("Foto");
И получаю HTTP ERROR 500, что делаю не так?
На сколько я понял если модель имеет название Foto.php и класс называется JshoppingControllerFoto то, он должен ее из контроллера подцеплять автоматический?
Умные исправляют ошибки, мудрые их недопускают =)