• Как использовать ajax интерфейс модуля, для не авторизованного пользователя?

    @GiGaHerz
    может кому пригодиться в контроллере
    use Bitrix\Main\Engine\ActionFilter;
        public function configureActions()
        {
            return [
                'publicMethod' => [
                    'prefilters' => [
                        // Убираем фильтр авторизации для этого метода
                        new ActionFilter\HttpMethod([ActionFilter\HttpMethod::METHOD_POST]), // Ограничиваем только POST запросы
                    ],
                ],
            ];
        }
    Ответ написан
    Комментировать
  • Как использовать ajax интерфейс модуля, для не авторизованного пользователя?

    Suntechnic
    @Suntechnic Автор вопроса
    Сам спросил - сам отвечаю:

    Набор префильтров, собственный для каждого экшена.
    По видимому, есть какой-то способ конфигурировать экшен, через аннотацию, но так глубоко я закапываться не стал.

    На практике достаточно удалить дефолтный фильтра авторизации из для экшена который должен работать для неавторизованных пользователей. Сделать это можно в например в методе init вашего контроллера:

    protected function init()
    	{
            parent::init();
            
            $this->setActionConfig('apply',[
                '-prefilters' => [
                        '\Bitrix\Main\Engine\ActionFilter\Authentication'
                    ]
                ]);
    		
    	}
    
        
        public function applyAction()
        {

    Здесь мы говорим что из префильтров контроллера apply нужно удалить \Bitrix\Main\Engine\ActionFilter\Authentication
    Ответ написан
    1 комментарий
  • Как опубликовать сообщение в группе с помощью API?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Чтобы отправить сообщение в живую ленту нужно еще более изощренный метод.

    Подключаем модуль Соц.сети:
    CModule::IncludeModule("socialnetwork");

    Чтобы отправить сообщение в ленту, нужно чтобы существовал пост, который будет отправлен в ленту, поэтому создаем сначала пост:

    $arFields = array(
     "TITLE" => "Заголовок записи",
     "DETAIL_TEXT" => "Тело сообщения",
     "BLOG_ID" => 1, //ID отправителя
     "AUTHOR_ID" => 1, //ID блога, в котором будет запись
     "DATE_PUBLISH" => '11.02.2014 09:08', // дада
     "PUBLISH_STATUS" => BLOG_PUBLISH_STATUS_PUBLISH, // Читаем в API
     "ENABLE_TRACKBACK" => 'N',
     "ENABLE_COMMENTS" => 'Y'
    );


    При успешном добавлении ($ID = CBlogPost::Add($arFields);) получим ID blogPost записи

    Затем необходимо отправить это сообщение в ленту, для нам нужен фрагмент кода (заменить соответствующим образом):

    $arEvent = array (
    	'EVENT_ID'     => 'blog_post',
    	'=LOG_DATE'    => 'now()',
    	'TITLE_TEMPLATE' => '#USER_NAME# добавил(а) сообщение "#TITLE#" в блог',
    	'TITLE'    => "Заголовок записи",
    	'MESSAGE'  => "Текст записи",
    	'TEXT_MESSAGE'  => "Текст записи",
    	'MODULE_ID'     => 'blog',
    	'CALLBACK_FUNC' => false,
    	'SOURCE_ID'     => $ID,
    	'ENABLE_COMMENTS'  => 'Y',
    	'RATING_TYPE_ID'   => 'BLOG_POST',
    	'RATING_ENTITY_ID' => $newID,
    	'ENTITY_TYPE' => 'U',
    	'ENTITY_ID'   => '1',
    	'USER_ID'     => '1',
    	'URL' => '/company/personal/user/1/blog/'.$ID.'/',
    );


    Создаём запись в ленте через: CSocNetLog::Add, на выходе получаем eventID (в случае успеха)

    Если все прошло хорошо, то выставляем права на пост (в премере отправляем ВСЕМ ПОЛЬЗОВАТЕЛЯМ G3)

    // Выдает права
    CSocNetLogRights::Add ( $eventID, array ("G3") );
    // Отправляет уведомление о новом сообщении
    CSocNetLog::SendEvent ( $eventID, 'SONET_NEW_EVENT' );


    Радуемся =)

    Все параметры получаются по средствам GetList например.
    Ответ написан
    4 комментария
  • Почему в логах nginx мне пишет (13: Permission denied) при выполнение php-скриптов?

    @Blumfontein
    Пусть my_user - тот, юзер, в директории которого работает сайт.

    1) В nginx.conf ставьте

    user my_user; # вместо user nginx;

    2) В php5/fpm/pool.d/www.conf

    # Найдите и исправьте на
    user = my_user
    group = my_user
    listen.owner = my_user
    listen.group = my_user


    3) Перезапуск nginx и fpm. Далее на папку /var/lib/nginx/tmp руками ставьте права 0700 на пользователя my_user

    chown -R my_user:my_user 0700 /var/lib/nginx/tmp

    4) PROFIT
    Ответ написан
    Комментировать
  • Как авторизоваться в СБИС ЭДО через API?

    @NotnaH
    Нужно указать Content-Type application/json-rpc;charset=utf-8 в заголовке.
    Ответ написан
    Комментировать
  • Есть ли единое API для доступа к данным чека онлайн касс?

    @mikecoon
    Решение на PHP

    В строчке
    curl_setopt($ch, CURLOPT_USERPWD, "8(800)555-35-35" . ":" . "554400");

    свои данные подставляй.

    $base = "https://proverkacheka.nalog.ru:9999";
    
    $derviceId = uniqid();
    $deviceOS = "Android 4.4.4";
    $protocol = "2";
    $clientVersion = "1.4.1.3";
    $userAgent = "okhttp/3.0.1";
    
    $fn = $_GET["fn"];
    $fd = $_GET["fd"];
    $fs = $_GET["fs"];
    
    $query = http_build_query([
        'fiscalSign' => $fs,
        'sendToEmail' => "no"
    ]);
    
    $ch = curl_init("$base/v1/inns/*/kkts/*/fss/$fn/tickets/$fd?".$query);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Device-Id: $derviceId",
        "Device-OS: $deviceOS",
        "Version: $protocol",
        "ClientVersion: $clientVersion",
        "ClientVersion: $clientVersion",
    ]);
    
    curl_setopt($ch, CURLOPT_USERPWD, "8(800)555-35-35" . ":" . "554400");
    
    $result = curl_exec($ch);
    $json = json_decode($result);
    
    var_dump($json);
    Ответ написан
    1 комментарий
  • Что изучить первым и выгоднее Angular, Angular 2 или React?

    @beduin01
    Лучше vuejs.org еще ничего не придумали.
    Ответ написан
    Комментировать
  • Как называется такой стиль сайта?

    In4in
    @In4in
    °•× JavaScript Developer ^_^ ו°
    Полноэкранная верска.

    Делается с помощью JS плагинов, типа Fullpage, Onepage, Scrollify (лучший, на мой взгляд) и т.п.
    Ответ написан
    Комментировать
  • Как правильно отправить json через POST с помощью CURL?

    brutto
    @brutto
    Conceptmeister, Darudar
    Если вы шлёте на сервер application/json, то в $_POST у вас ничего не окажется -- он будет пустым. Что бы прочитать такой POST-запрос вам понадобится что-то вроде этого:

    $json = file_get_contents('php://input');
    $obj = json_decode($json);

    Подозреваю, что тут есть ответ на ваш вопрос:
    stackoverflow.com/questions/19004783/reading-json-...

    PS: О том что такое php://input и как с ним можно работать и когда говорится вот тут: php.net/manual/ru/wrappers.php.php
    Ответ написан
    2 комментария