Jump to content

alexivchenko

Пользователь
  • Content Count

    359
  • Joined

Posts posted by alexivchenko

  1. http авторизация:

    + она закрывает всю бекенд директорию от лишних запросов

    + исходя их первого уменьшается необходимость жестко контролировать объекты бекенда

    + безопасность на хорошем уровне

    - данные об менеджере ограничены и проблемно связываются с остальной базой данных

    - при попадании в админ-часть, даже с минимальными правами, нам становятся доступны запросы на сторонние объекты (у которых может быть неконтролируемый функционал)

     

    бд авторизация:

    + данные менеджера легко расширяются и связываются с другими данными  

    - необходимость жестких мер по закрытию доступа к скриптам бекенда. То есть нужно контролировать авторизацию в каждом файле что способен выполниться в бекенде (различные файл менеджеры и прочее)

    +- уровень безопасности зависит от пункта выше

     

    способ авторизации зависит в первую очередь о целей для которых эта авторизация делается. Если она несет чисто доступный функционал - вполне достаточно http.

     

     

    Автору темы: 

    при создании изменении менеджера - создавайте изменяйте обычного пользователя. Связь пользователь=менеджер сделайте через запись ида пользователя в .passwd

    Подводные камни будут, но в любом случае их будет меньше чем переделывать всю авторизацию менеджера

     

    Спасибо за рекомендацию (попробую), сейчас делаю локально и проверяю пока с ролями (1.2.3)

    В административной панели проверяю на доступ по цифре в строке базы role

    Прямого доступа к site.com/simpla нет, чтобы убрать её из robots.txt и при определении возможности доступа к административной части на главной странице сайта появляется ссылка "АдминПанель" 

  2. Авторы систем также морально устарели как и ты.

    Ты не идёшь в ногу со временем, тебе достаточно строчить "код" в notepad++...

    P.S. Старый запорожец уже и не сыскать, но он есть и даже едет.

    Артём, объясните. Чем нынешняя авторизация админа лучше, чем сделать ее как у пользователя.

  3.  

    Для этого надо переделать всю схему авторизации админа - по образцу авторизации пользователя. Довольно хлопотно. А вообще по-хорошему это должно быть стандартно...

    Я так понимаю нужно сделать роли, по типу групп - администратор, менеджеры и пользователи.

    В базе у пользователя сделать role (1) админ, (2) менеджер, (3) пользователь. Пользователь при регистрации получает (3). Менеджера назначает администратор. Админ получает либо при установке, либо ручками в базе. В админ панели управляем ролями с доступом.

    Далее делать проверку сессии по номеру роли, если 1 и 2 допускаем к админ.панели.

  4. Никак не могу разобраться, как при нынешней авторизации администратора (site.com/simpla), сделать, чтобы авторизация проходила как у обычного пользователя с главной страницы сайта?

  5. Готового решения видимо нет.

    Но такое решение было логично сделать не только при оплате Яндекс.Кассой, а вообще из коробки при применении купона на сайте, чтобы менялись {$cart->total_price|convert} и {($purchase->variant->price*$purchase->amount)|convert} корзины. Видимо как-то нужно реализовать это в api/Cart.php

     

    Если брать за основу пример из одной стать, допустим

    В корзине 3 товара

    1. 2827 руб ( {($purchase->variant->price*$purchase->amount)|convert} )

    2. 1365 руб ( {($purchase->variant->price*$purchase->amount)|convert} )
    3. 1538 руб ( {($purchase->variant->price*$purchase->amount)|convert} )
    Итого 5730 руб ( {$cart->total_price|convert}  )
    Скидка 300 руб
     
    Первое, что нам нужно узнать, это долю товара в итоговой сумме
    1. 2827*100%/5730 = 0.49 %
    2. 1365*100%/5730 = 0.24 %
    3. 1538*100%/5730 = 0.27 %
     
    Второе узнать сумму скидки каждого товара
    1. 300*0,49 = 148 руб
    2. 300*0,24 = 71 руб
    3. 300*0,27 = 81 руб
     
    Третье вычесть сумму пропорциональной скидки из каждого товара
    1. 2827-148 = 2679 руб ( {($purchase->variant->price*$purchase->amount)|convert} )
    2. 1365-71 = 1294 руб ( {($purchase->variant->price*$purchase->amount)|convert} )
    3. 1538-81 = 1457 руб ( {($purchase->variant->price*$purchase->amount)|convert} )
     
    Итого после применения скидки 300 руб и пропорционально ее распределили
    5430 руб ( {$cart->total_price|convert}  )
  6. После перехода с http на https перестал работать скрипт автозаполнение поиска.

    Сам поиск работает, но при вводе в поиске наименования товара, перестал выпадать список с товаром.

     

    Подскажите пожалуйста, куда обратить внимание?

    Смотрите в консоль браузера на ошибки

    А так, видимо в htaccess не правильно прописано перенаправление

  7. я может не правильно выразился...я имею ввиду пути вместо http на https изменил ;) нашел ошибку с корзиной...но поиск так и не работает :(

     

    Пришлите ссылку на сайт в личные сообщения, посмотрю

  8. Вроде нашел решение, но что-то не работает

     

    https://codepen.io/vpolovnyov/pen/jeYZLg

     

    class Menu {
      constructor(el) {
        this.el = el
        
        this.el.addEventListener('click', this.handleClick.bind(this))
        window.addEventListener('resize', this.scrollToActiveItem.bind(this))
        
        this.scrollToActiveItem()
      }
      
      get activeEl() {
        return this.el.querySelector('.is__active')
      }
      
      handleClick(e) {
        e.preventDefault()
    
        this.el.querySelector('.is__active')
          .classList
          .remove('is__active')
        
        e.target.parentNode
          .classList
          .add('is__active')
        
        this.scrollToActiveItem()
      }
      
      scrollToActiveItem() {
        if (!this.activeEl) return
    
        const scrollParent = this.el.parentNode
        const scrollParentWidth = scrollParent.clientWidth
        const activeElWidth = this.activeEl.clientWidth
        const activeElLeftOffset = this.activeEl.offsetLeft
    
        const isActiveElInvisible = activeElLeftOffset + activeElWidth > scrollParentWidth
    
        if (isActiveElInvisible) {
          scrollParent.scrollLeft = activeElLeftOffset - (scrollParentWidth / 2) + (activeElWidth / 2)
        } else {
          scrollParent.scrollLeft = 0
        }
      }
    }
    
    new Menu(document.querySelector('.menu'))
    

    Меню становится не кликабельным

    <aside class="aside">
    	<div class="menu">
    		<div class="menu-list__track">
    			{* Рекурсивная функция вывода дерева категорий *}
    			{function name=categories_tree}
    			{if $categories}
    			{foreach $categories as $c}
    				{* Показываем только видимые категории *}
    				{if $c->visible}
    						<a class="category-nav__item {if $category->id == $c->id}is__active{/if}" href="catalog/{$c->url}" data-category="{$c->id}">
    							{if $c->image}
    							<div class="category-nav__icon">
    								<img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name|escape}">
    							</div>
    							{/if}
    							{$c->name|escape}
    						</a>
    						{categories_tree categories=$c->subcategories}
    				{/if}
    			{/foreach}
    			{/if}
    			{/function}
    			{categories_tree categories=$categories}			
    		</div>
    		<!-- /.category-list__track -->
    	</div>
    	<!-- /.category-list -->
    </aside>
    <!-- /.aside -->
    
  9. На форуме Okay Вам не помогли, и Вы решили тут написать (правильно: один хрен система одна и та же)

     

    Покажите сайт, где это нужно сделать

    Причём тут система? И сайт показывать не нужно. Написал там где сижу и сидят верстальщики.

    Вопрос не к функционалу, а к тем кто занимается версткой и знает JavaScript.

  10. Адаптивный шаблон в мобильной версии, имеет горизонтальное меню категорий закрепленное в нижней части экрана. Знаю, что нужно рассчитать ширину от начала пункта меню и от конца до краев экрана.

    Как сделать, чтобы текущий пункт меню всегда оказывался по центру?

  11. очень просто. К примеру

     

     
    	            for($i = 1; $i <= 5; $i++)
    	            {
    	                $num .= rand(0, 9);
    	            }
     
    			
    			$url = 'x'$num;
    

     

    результатом буде $url =x00000 где 0 - рандомная цифра от 0 до 9

     

     

    изменить $url в ProductAdmin.php

     

    можно использовать md5 и обрезать лишнее

     

     

     

    Привет! 

    Спасибо за вариант, я решил вопрос иначе

    Заменил в simpla/ProductAdmin.php

    $product->url = trim($this->request->post('url', 'string')); 

    на

    $product->url = uniqid('') . substr(md5(time()), 0, 11); //генерация url товара
    

    Так же убрал транслит url и само поле url из шаблона. 

     

    Теперь не могу понять, при каждом редактировании товара меняется и url. 

    Как сделать проверку, если в базе поле url заполнено тогда оставить, если нет сгенерировать.  

  12. Привет!

     

    Никак не могу понять, каким образом формируются такие url страницы товара:

     

    webshop.ru/products/5d27e2e28b2c370101cf06c9

    webshop.ru/products/5d7db6b428fc710101b62057

     

    Значение 5d27e2e28b2c370101cf06c9 - имеет 24 символа. То есть это не md5 против 32 символов

    Первоначальное значение 5d статичное или меняется на 5a, 5b, 5c, 5d, 5e

    Я так понимаю это не просто id, а возможно hash_id 

    Подскажите как такое реализовать и как хранить в БД

  13. Так дело в том что я это сразу сделал)

    Значит у вас что-то с базой, так как новое описание не переписалось.

    Тут 2 решения

    1. Дать доступ в FTP, чтобы вам решили проблему

    2. Проверить правильно ли записалось новое описание страницы, если нет, проверять почему

  14. Ребята. Сделал всё по инструкции. Единственное что, взял файлы уже готовые. Которые предоставил Ardion.

    Всё подобавлял, ввёл ключи от капчи Гугл. При регистрации (проверяю) - очень долгий таймаут и сообщение - неверно введена капча!

     

     

    в логах:

    [Mon Feb 17 15:55:36.286289 2020] [:error] [pid 16263] [client 123.34.112.130:59995] PHP Warning:  Query was empty [] in /site/api/Database.php on line 105, referer: https://site/simpla/index.php?module=SettingsAdmin
    
    

    Я так понял, нужно либо заново ключи перегенерировать, либо что-то где-то добавить, по причине того, что api-ключи не подхватываются сайтом (вроде бы.) но я не уверен. подскажите, кто будет добр )

    На странице «Настройка сайта» ключи прописали и сохранили?

×
×
  • Create New...