Павел Бигель

Павел Бигель

С нами с 15 января 2019; Место в рейтинге пользователей: #21
Павел Бигель
22 июня 2021, 10:41
0
Решение, конечно, так себе)
Прям очень так себе

Гораздо более прикольным способ было бы гонять ValueObject объектики в виде json.
Павел Бигель
17 мая 2021, 14:04
+1
1. Ну так назови цикл статьей «Скопируй сам». Почему «Сделай»?
2. Это не лучший, а прям наихудший способ. Кстати если так хотелось прикрутить авторизацию, то можно было доработать Login.
Павел Бигель
17 мая 2021, 13:09
+1
Без проблем!
100$ и я готов написать решение многократно элегантнее этого с пояснением каждого шага для новичков. Готовы проспонсировать статью?
Дорого?
Можете использовать компонент Office который стоит половину стоимости и реализует задачу гораздо лучше
modstore.pro/packages/users/office
Павел Бигель
17 мая 2021, 13:04
0
Валидирует.
У тебя валидация уровня required, я туда могу тебе прислать все что угодно.
Павел Бигель
17 мая 2021, 12:29
+6
Мне как раз все понятно.
{if $_modx->user.id > 0}           
    <a href="[[~13]]">  <!-- 13 это id ресурса с формой оформления заказа -->
         <button type="submit" class="knopka2">
             Оформить заказ
       </button>
    </a>          
{else}
    <button type="button" data-toggle="modal" data-target="#modalSMSAuth" class="knopka2">
        Оформить заказ
    </button>
{/if}
Помесь стандартного и fenom синтаксиса это дурной тон.

{'!AjaxForm' | snippet:[
                'snippet' =>'custConfirm',
                'form' =>'@FILE chunks/forms/confirmForm.html',
                'validate'=>'phone:required'
            ]} 
            {'!AjaxForm' | snippet:[
                'snippet' =>'custCheckCode',
                'customValidators' => 'validateCode'
                'form' =>'@FILE chunks/forms/checkcodeForm.html',
                'validate'=>'phone:required,code:validateCode',
                'redirectTo' => 13 
            ]}
Два некешированных вызова AjaxForm. А че ж не 5? Эту задачу можно решить одним вызовом сниппета.

<?php
$file = MODX_CORE_PATH . 'components/codesender/smsc_api.php';
if(!file_exists($file)){
    $modx->log(1, 'FILE NOT FOUND');
}
include_once $file;

if(!isset($translit)){
    $translit = 1; // по умолчанию отправляем транслит, там можно впихнуть больше текста
}
$send = send_sms($number, $message, $translit);

return $send;
Такого рода задачи решаются не сниппетами. Сниппеты это вообще про другое.
Более того, ты же ниже создаешь пакет, какая проблема примутить к нему класс-контроллер?

Тут вы вероятно заметили, что есть сниппет genPassword, изнутри он выглядит так
Опять же а) Не решаются такие задачи сниппетами б) mt_rand не является безопасным для задач уровня генерации паролей. Ты бы это знал, если бы писал это сам.

Итак, выходим на финишную прямую. Сниппет custCheckCode отвечает за проверку кода, авторизацию и регистрацию пользователей
Снова, такие задачи не решаются сниппетами.

// если ошибок нет
    if($_POST['phone']){
        $username = preg_replace('/[^0-9]/', '', trim($_POST['phone']));
        $params = array('username' => $username, 'password' => $_POST['code'], 'group' => 2, 'active' => true, 'blocked' => false);
        $params = array_merge($_POST, $params);
        $user = $modx->getObject('modUser', array('username' => $username));
        if(!$user){
            $modx->log(1, 'Регистрация');
            $user = $modx->runSnippet('Registration', array('params' => $params));
        }
        $user->set('password', $_POST['code']);
        $user->save();
        $response = $modx->runSnippet('Authorization', array('params' => $params));
        if(!$response['success']){
            return  $AjaxForm->error($response['message'],  array());
        }
        $redirectId= $scriptProperties['redirectTo'] ?: 1; // при вызове сниппета мы передаём id ресурса, на который нужно сделать редирект, если не передаем, то редирект будет на главную.
        $redirectUrl = $modx->makeUrl($redirectId , 'web', '', 'full'); 
        return $AjaxForm->success($response['message'], array('redirectTo' => $redirectUrl)); 
    }
}
Из поста данные не валидируются. Пахнет безопасностью! Либо впадлу, либо не знаешь что это такое.
Тут кстати гораздо логичнее была бы проверка на false.

Кастомный валидатор validateCode содержит такой код:
Опять никакой валидации. Еще и сырой запрос (вызов которого не оправдан ничем)

Регистрацию я сделал так (Registration)
Ни единой проверки на то что модель не сохранилась. Неверное сохранение аггеративных моделей.

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

Итого ты не учишь, а даешь людям копировать плохие практики.
Абсолютно заслуженный минус
Павел Бигель
17 мая 2021, 10:48
+1
Простыня кода, три строчки текста, никаких объяснений, нулевая информативность.
Павел Бигель
20 апреля 2021, 12:01
0
Обращайтесь t.me/deadcrystal
Пишу кастомные решения по импорту
Средний прайс 100-200$
Павел Бигель
11 апреля 2021, 21:46
+2
Вот вроде и минус ставить не хочется (человек старался + олд + по содержательности явно лучше многих статей тут), но и лайк ставить не за что.
Практического смысла и применения в этом околонулевая
Павел Бигель
07 апреля 2021, 13:11
0
Yii откинулся по причине своей консервативности. Ровно как и MODX
Павел Бигель
05 апреля 2021, 12:26
+1
Laravel будут тянуть как Грецию, даже если Тейлор отъедет.
Павел Бигель
23 января 2021, 19:25
0
Никто не мешает занаследовать процессор и искать по чему хочется.
Павел Бигель
23 января 2021, 19:13
+1
Люди продолжают изобретать велосипеды
тыц
Павел Бигель
25 ноября 2020, 12:29
0
Рекомендую бежать с такого хостинга, где default charset latin
Павел Бигель
17 ноября 2020, 15:30
1
+1
Я предлагал такое решение
if (is_array($this->options) || $this->options instanceof Countable)
Павел Бигель
05 ноября 2020, 14:03
+7
Спасибо за minishop(1 и 2) и pdotools. Инструменты которые долго меня кормили как программиста.
Удачи в новых начинаниях!
Павел Бигель
01 ноября 2020, 17:20
+1
В MODX парадигме AJAX запросы ведут в коннектор.
Делать AJAX запрос в сниппет, имхо, это прямой билет в дурку
Павел Бигель
24 октября 2020, 20:14
0
гарантировать неуязвимость
Так не бывает в принципе. Совсем.
Павел Бигель
24 октября 2020, 19:53
0
За любые уязвимости на своем сайте несешь ответственность только ты.
Так или иначе — как ты можешь на 100% быть уверенным в том, что какой-то компонент на сайте образовал дыру?