Всего 125 955 комментариев

Александр Мельник
12 мая 2022, 07:31
0
Господа, раз уж здесь обсуждаются технологии из мира javascript, то хочу услышать ваше мнение и опыт использования jwt токенов как инструмента авторизации?
Изучаю эту технологию и честно говоря, на мой взгляд, это очень небезопасная система.
Плюс вижу, что совершенно каждый разработчик реализует логику работу с jwt по своему, кто то даже хранит их (access token) в базе, хотя по моему это полностью противоречит идее самого токена. Зачем тогда сигнатура в токене, если хранить в базе ассоциацию между пользователем и токеном, это по сути получается механизм сессий с хранением в базе.
Какую бы документацию не читал, везде встречаю фразу типа — даже если у вас украдут токен, то он позволит пользоваться сервисом не долго. Не говоря уже о том, что большинство разработчиков не ставят время жизни в 10 минут, а ставят 12 часов а то и больше, но даже 10 минут хватит, чтобы не спеша и попивая кофе выкачать например всю базу с клиентами. Ничего себе система авторизации и безопасности).

Но это мои и пока теоретические мнения. А есть у кого то реальный и положительный опыт использования токенов именно как инструмента аутентификации? Как применяете его вы? Где храните токены на клиенте? В localstorage? Разбирались ли глубоко

Собственно, почему я, человек далекий (надеюсь что это временно ) от nodejs и стеков типа MEAN, решил вообще изучить jwt. Изобретаю механизм межсерверной аутентификации. Нужно сделать, чтобы человек авторизовавшись в одном сервисе (домене и сервере), перейдя на другой сервис (домен и сервер) сохранил свою аутентификацию и был уже авторизован. Инструмент сессий для этого мало подходит, ну разве что с хранением сессии в общей базе данных, к которой будут иметь доступ все сервисы… В общем буду рад вашим идеям, я то найду и изобрету такой механизм, но чужой опыт — всегда бесценен.
Артур Шевченко
11 мая 2022, 23:35
0
Я бы на странице вывел например , а потом вот тут assets/components/sweetalert2/js/default.js проверял бы значение в meta[name=«pageid»] и в зависимости от этого запускал бы скрипт.
Артур Шевченко
11 мая 2022, 20:17
+1
Я сейчас тебя удивлю, но в родном чанке от minishop2 уже всё за тебя написали.
{foreach $options as $name => $values}
    <div class="form-group row align-items-center">
        <label class="col-6 col-md-3 text-right text-md-left col-form-label" for="option_{$name}">{('ms2_product_' ~ $name) | lexicon}:</label>
        <div class="col-6 col-md-9">
            <select name="options[{$name}]" class="form-control col-md-6" id="option_{$name}">
                {foreach $values as $value}
                    <option value="{$value}">{$value}</option>
                {/foreach}
            </select>
        </div>
    </div>
{/foreach}
Константин
11 мая 2022, 20:02
0
Join убрал, заменил на split
Теперь чанк такой:
<select name="marka" class="no-border jsSelect">
{foreach $options as $option}

            {if $option.value is array}
               <option value="{$option.value | split : ', '}">{$option.value | split  : ', '}</option>
            {else}
                <option value="{$option.value}">{$option.value}</option>
            {/if}
            
{/foreach}
</select>

И выводит, как я уже понял, массив Array: prntscr.com/bBdan3Y7zv1y

Выходит его теперь как-то разобрать foreach menom?
Виноградов Тимур
11 мая 2022, 18:37
0
Всем спасибо за ответы, по итогу заработал такой вариант в .htaccess:
RewriteRule ^en/(.*) /$1 [R=301,NC,L]
Futuris
11 мая 2022, 17:26
0
Спасибо! Буду читать документацию.
Василий Наумкин
11 мая 2022, 17:23
0
Да, свой полноценный сервер со многими фишками — v3.nuxtjs.org/guide/concepts/server-engine/

Работа с БД не зависит от вида сервера — он просто будет выполнять ваш код.
Futuris
11 мая 2022, 17:14
0
Имеется в виду, что у Nuxt собственный сервер, который можно использовать для бэкэнда? И ко всему этому можно «прикрутить» базу данных?
Василий Наумкин
11 мая 2022, 17:06
0
И кстати Express раньше ставился «из коробки» при установке Nuxt, а теперь этого почему-то нет.
Потому что не нужно — у Nuxt есть свой собственный сервер, лучше его и использовать.
Артур Шевченко
11 мая 2022, 16:39
+1
Загляни в чанк посмотри, что там если там join убери, если нет, то используй модификатор split для разбиения строки в массив.
Константин
11 мая 2022, 16:24
0
Получилось вывести, но почему-то значения опций идут через запятую: prnt.sc/tttKEXSIDpZU

Есть ли возможность каждое значение опции отдельным полем в выпадающем списке выводить?
Константин Ильин
11 мая 2022, 16:07
0
Спасибо!
Так и сделал, погуглил седня хорошенько, но только щас увидел ваш комментарий)

Установил стандартный CKEditor из репозитория
Первое что надо сделать — включить codemirorr
Системные настройки->CKEditor
Прописываем настройке ckeditor.extra_plugins значение codemirror

Далее
Открываем файл: manager/assets/components/ckeditor/ckeditor/config.js
Добавляем 
config.startupMode = 'source';

Еще одно действие, но возможно только у меня так, файлы как то кешируются, так что надо в браузере надо открыть manager/assets/components/ckeditor/ckeditor/config.js и обновить.
Убедится, что изменения появились и должно заработать.
Константин
11 мая 2022, 14:55
0
То есть создать технический товар, который будет содержать все существующие значения опций, указать его в product, но скрыть от индексации и публикации? Спасибо за идею. Точно же.
Артур Шевченко
11 мая 2022, 14:50
+1
Ок, тогда, наверное, можно использовать стандартный сниппет в свойстве product укажи id любого товара у которого есть нужная опция
Константин
11 мая 2022, 14:22
0
Спасибо, я просто очень новичок в программировании, почти ноль в php по этому так туплю.
Понял, как вывести название полей.
Но не могу понять, как вывести именно значения конкретного поля: prnt.sc/2FKOYRKsdTPl
То есть не МОДЕЛЬ, а его значения: RIO, SOLARIS.
Может не правильно изначально сформулировал.
Артур Шевченко
11 мая 2022, 13:46
+1
Константин, я же дал работающий код, а вы даже не смогли найти информацию о том, как сохранить результат работы сниппета в переменную.
{set $options = 'SnippetName' | snippet:[]}
{foreach $options as $option}
чтобы увидеть все поля в массиве.
{$option | print} 
{/foreach}
fred Oushen
11 мая 2022, 13:39
0
Откатить увы, не получится… С дуру бекап не сделал и накатил обнову. Пробовал откатить обновой ниже версии, толку ноль…
Константин
11 мая 2022, 12:29
0
Спасибо! Теперь ошибка пропала: prnt.sc/Y6GQrMCHXjyr
Скрипт сработал
Но локализации spb в ресурсах не добавились:https://prnt.sc/uKX81XjRPLcN

Вот скрипт:

<?php
$lang = 'spb';
$localizator = $modx->getService('localizator');
$resources = $modx->getIterator('modResource');
foreach($resources as $resource) {
	$tmp = $modx->getObject('localizatorContent', array('resource_id' => $resource->id, 'key' => $lang));
	if($tmp) {
		$tmp = $modx->newObject('localizatorContent');
		$tmp->fromArray(array(
			'key' => $lang,
			'resource_id' => $resource->id,
			'active' => 1,
			'pagetitle' => $resource->pagetitle,
			// ...
		));
		$tmp->save();
	} else {
		// обновление если нужно, fromArray или ->set(key, value);
	}
	
}
Игорь
11 мая 2022, 11:12
0
супер))) блин… а я в ручную сидел делал каждый в tpl и js
спасибо!!! то что надо -))