Skocz do zawartości
Valantir

Wylogowywanie po wejściu do modułu

Rekomendowane odpowiedzi

Witam,

Napisałem ostatnio własny moduł do Prestashop w wersji 1.6.1.7, który służy do tworzenia karuzeli na podstronie stronie. Problem w tym, że od czasu do czasu gdy kliknie się w przycisk na liście "Konfiguruj", to użytkownik jest przenoszony na podstronę z logowaniem. Ponowne zalogowanie powoduje wejście do panelu administratora ale kliknięcie na przycisk "Konfiguruj" powoduje znów przejście na stronę z logowaniem. Problem dotyczy chyba tylko mojego modułu, bo inne jakoś potrafią współpracować. Bardzo proszę o jakieś wskazówki jak się za to zabrać...

Pozdrawiam

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
<?php

if (!defined('_CAN_LOAD_FILES_'))
    exit;

class collection extends Module
{
    public $existingFiles = array();

    public $count = NULL;

    public $collectionDir;
    public $thumbnailCollectionDir;

    /**
     * {@inheritdoc}
     */
    function __construct()
    {
        $this->name = 'collection';
        $this->tab = 'other';
        $this->version = '1.0.0';
        $this->author = 'Autor';
        parent::__construct();
        $this->displayName = $this->l('collection');
        $this->description = $this->l('collection');
        $this->webPath = '/img/collection/';
        $this->collectionDir = getcwd() . '/../collection';
        $this->thumbnailCollectionDir = getcwd() . '/../collection/thumbnails';
    }

    /**
     * @return boolean
     */
    public function install()
    {
        parent::install();
        if (!$this->registerHook('Header')) {
            return false;
        }

        /* Create table */
        $res = $this->createTable();
        if (!$res) {
            return false;
        }

        if (!mkdir($this->collectionDir) || !mkdir($this->thumbnailCollectionDir)) {
            return false;
        }

        return true;
    }

    /**
     * @return boolean
     */
    public function uninstall()
    {
        if (!parent::uninstall() || !Configuration::deleteByName('collection')) {
            return false;
        }

        /* delete table */
        $res = $this->deleteTable();
        if (!$res) {
            return false;
        }

        if (file_exists($this->collectionDir) && is_dir($this->collectionDir)) {
            return $this->removeFile($this->collectionDir);
        }

        return true;
    }

    /**
     * @param string $path
     * 
     * @return boolean
     */
    protected function removeFile($path)
    {
        if (is_dir($path) === true)
        {
            $files = array_diff(scandir($path), array('.', '..'));

            foreach ($files as $file)
            {
                $this->removeFile(realpath($path) . '/' . $file);
            }

            return rmdir($path);
        }

        else if (is_file($path) === true)
        {
            return unlink($path);
        }

        return false;
    }

    /**
     * Create table
     */
    protected function createTable()
    {
        /* Category Photo */
        $res = (bool) Db::getInstance()->execute('
			CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'collection` (
				`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
				`photo_path` varchar(255) NOT NULL,
				`thumbnail_path` varchar(255) NOT NULL,
                                `position` int(10) unsigned NOT NULL,
				PRIMARY KEY (`id`)
			) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=UTF8;
		');

        return $res;
    }

    /**
     * delete table
     */
    protected function deleteTable()
    {
        return Db::getInstance()->execute('
            DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'collection`;
        ');
    }

    /**
     * Displays panel to build grid system in backend
     * 
     * @return string
     */
    public function getContent()
    {
        
        var_dump($this->context->link->getModuleLink('collection','collection'));die;


        $this->addCss();
        $this->addJsScripts();
        $error = null;
        $file = $_FILES['collection_photo'];

        $allFiles = $this->countAllFiles();
        if ($allFiles >= 30) {
            $error = 'Limit zdjęć - przekroczyłeś/aś limit 30 zdjęć. Usuń jakieś zdjęcia aby dodać nowe';
        } else {
            if (Tools::isSubmit('submit') && !empty($file)) {
                $allowedExts = array("jpg", "jpeg");
                $allowedTypes = array('image/jpeg', 'image/jpg');
                if (!in_array($file['type'], $allowedTypes)) {
                    $error = 'Niewłaściwy typ pliku. Dozwolonymi typami plików są: ' . implode(', ', $allowedTypes);
                }

                $ext = pathinfo($file['name'], PATHINFO_EXTENSION);
                if (!in_array($ext, $allowedExts)) {
                    $error = 'Niewłaściwe rozszerzenie pliku. Dozwolonymi rozszerzeniami plików są: ' . implode(', ', $allowedExts);
                }

                $fileName = uniqid() . '.' . $ext;
                $thumbnailFile = $this->resizeImage($file['tmp_name'], $fileName);
                if (!$thumbnailFile) {
                    $error = 'Błąd podczas generowania miniatury.';
                }

                if (!$error) {
                    $newPath = $this->collectionDir . '/' . $fileName;
                    $result = $this->fileCopy($file['tmp_name'], $newPath);
                    if ($result) {
                        $lastPosition = Db::getInstance()->executeS('SELECT position FROM `' . _DB_PREFIX_ . 'collection` ORDER BY position DESC LIMIT 1');
                        if (empty($lastPosition)) {
                            $lastPosition = 1;
                        } else {
                            $lastPosition = $lastPosition[0]['position'] + 1;
                        }

                        $upload = Db::getInstance()->executeS("INSERT INTO `" . _DB_PREFIX_ . "collection` "
                            . "(photo_path, thumbnail_path, position) "
                            . "VALUES ('" . _PS_BASE_URL_ . "/collection/" . $fileName . "', '" . _PS_BASE_URL_ . "/collection/thumbnails/" . $fileName . "', '" . $lastPosition . "')")
                        ;

                        if (!$upload && file_exists($newPath)) {
                            unlink($newPath);
                        }
                        
                        Tools::redirectAdmin(AdminController::$currentIndex.'&configure='.$this->name.'&token='.Tools::getAdminTokenLite('AdminModules'));
                    }
                } else {
                    Tools::redirectAdmin(AdminController::$currentIndex.'&configure='.$this->name.'&token='.Tools::getAdminTokenLite('AdminModules') . '&error=' . $error);
                }
            }
        }

        $allFiles = Db::getInstance()->executeS('SELECT id, photo_path, thumbnail_path, position FROM `' . _DB_PREFIX_ . 'collection` ORDER BY position ASC');

        $this->context->smarty->assign(array(
            'error' => ($error) ? $error : Tools::getValue('error'),
            'allFiles' => $allFiles,
        ));

        return $this->display(__FILE__, 'views/templates/admin/collection.tpl');
    }

    /**
     * Zlicza ilosc zdjec w kolekcji
     * 
     * @return string
     */
    protected function countAllFiles()
    {
        $countAllFiles = Db::getInstance()->executeS('SELECT COUNT(*) AS how_many FROM `' . _DB_PREFIX_ . 'collection`');

        return $countAllFiles[0]['how_many'];
    }

    /**
     * Dodaje wymagane pliki js
     */
    protected function addJsScripts()
    {
        $this->context->controller->addJs('https://code.jquery.com/ui/1.12.1/jquery-ui.js', 'all');
        $this->context->controller->addJs($this->_path . 'assets/js/collection-module.js', 'all');
    }

    /**
     * Dodaje wymagane pliki css
     */
    protected function addCss()
    {
        $this->context->controller->addCss($this->_path . 'assets/css/collection-module.css', 'all');
    }

    /**
     * Uploads files
     * 
     * @param string $file
     * @param string $path
     * 
     * @return boolean
     */
    protected function fileCopy($file, $path)
    {
        return move_uploaded_file($file, $path);
    }

    protected function resizeImage($file, $newName)
    {
        $width = 87;
        $height = 130;

        list($widthOrig, $heightOrig) = getimagesize($file);

        $newImage = imagecreatetruecolor($width, $height);

        if (exif_imagetype($file) == IMAGETYPE_PNG) {
            $originalImage = imagecreatefrompng($file);
        } else {
            $originalImage = imagecreatefromjpeg($file);
        }

        if (!is_resource($originalImage)) {
            return false;
        }

        if (imagecopyresampled($newImage, $originalImage, 0, 0, 0, 0, $width, $height, $widthOrig, $heightOrig)) {
            return imagejpeg($newImage, $this->thumbnailCollectionDir . '/' . $newName, 100);
        }

        return false;
    }
}

Wersja presty to 1.6.1.7

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Dzisiaj zauważyłem, że taka sama akcja dzieje się po wejściu z Firefoxa na listę modułów. Problem ewidentnie jest z sesją i cookie, bo jak usunąłem ciastka, to wszystko wraca do normy. Wszystko stoi na home.pl

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się



  • Podobna zawartość

    • Przez Actuna
      Świeża instalacja w wersji 1.6.1.20, włączony multisklep, php5.6 (opcjonalnie mogę wyżej tylko na 7.0, 7.1),
      domyślny szablon, dwa języki PL, EN.
      Objaw: Po instalacji np modułu dowolnego (np: Block CMS, Blok informacji kontaktowych, Blok Lubie to na FB, )
      w administratorze ładnie mogę po zmieniać treści, ustawienia ...
      Pierwsze wejście na stronę sklepu -> wszystko pojawia się poprawnie, 
      ale jak dam odśwież ekran, to pojawiają się domyślne teksty ... i tak z każdym modułem,
      raz j=na jakiś czad odświeżania pojawią się prawidłowe treści.
      Po zmianie danych w modułu, kolejne odświeżenie strony jest prawidłowe, kolejne już nie ...
      Co próbowałem:
      1 - wyłączenie cache = brak problemu
      2 - przebudowanie cache z poziomu administratora = pierwsze wejście prawidłowe, kolejne z nieprawidłową wartością
      3 - ręczne usunięcie plików cache = pierwsze wejście prawidłowe, kolejne z nieprawidłową wartością
      4 - od instalowanie modułu, ponowna instalacja i konfiguracja = pierwsze wejście prawidłowe, kolejne z nieprawidłową wartością
       
      Jakiś cyrk ... mam problem z różnymi modułami, skończyły mi się pomysły gdzie może być problem.
       
      W ramach podejścia nie standardowego zauważyłem, że edycja plików *.tpl danego modułu w katalogu szablony sklepu, 
      taka jak dodanie pustej linii, spacji i zapisanie pliku, rozwiązuje problem do czasu kolejnej zmiany w danych danego modułu.
      (cache włączone).
      Powyższe rozwiązanie traktuje jako obejście problemu, a nie jego rozwiązanie,
      prawdopodobnie problem jest błachy. 
    • Przez AnkaW
      Witam
      Ponownie natknęłam się na problem z którym nijak nie wiem co począć. Z zewnętrznej aplikacji chcę ściągnąć dane na temat produktu. Oczywiście uwierzytelniam się itd.
      Mam /api/products/{id_produktu} ale:
      - cena jaką mi przesyła jest jakaś całkiem absurdalna, na pewno nie jest to aktualna cena,
      - nie mogę odczytać przyjaznego linku do produktu.
      Co robię nie tak albo gdzie to w ogóle mogę zmienić aby mi się wysyłały poprawne dane? Szukałam ale chyba jako początkującą mnie to przerasta:(
      pozdrawiam
      Anka
    • Przez AnkaW
      Cześć
      Wybaczcie początkującej ale mam pewnie banalny problem jednak jakoś nie mogę znaleźć rozwiązania.
      Zaczęłam budować własny moduł. Działanie modułu polega na wypełnieniu pół formularza, przejściu dalej, kolejny widok i na podstawie poprzedniego formularza wyświetlam kolejny formularz, i tak do czwartego kroku finalnego gdzie na podstawie ostatniego formularza wyświetlam produkty i mogę je dodać do koszyka.
      To moja pierwsza próba z samodzielnym pisaniem modułu przepraszam więc za może błahe pytanie.
      Jak przejść w obrębie tego modułu między kolejnymi widokami?
      Mam zrobiony kontroler w controllers/front o nazwie widok1.php do tego mam views/templates/front pliki skladak.tpl (to takie główne opakowanie) i widok1.tpl. W skladak.tpl mam include widok1.tpl zrobiony. I jak teraz przejść dalej do kolejnych widoków? Wiem że jestem może głupia blondynka ale nie mogę do tego dojść.
      Anka
    • Przez miro87
      Zlecę napisanie modułu importującego produkty i kategorie z hurtowni pfconcept.com do świeżo postawionego sklepu na silniku presta.
      Hurtownia udostępnia pliki XML, z których trzeba pobierać wybrane elementy.
      Więcej informacji i szczegółowy opis zlecenia podeślę po kontakcie na priv.
    • Przez Mr_DiPi
      Na Prestashop addons pojawił się oficjalny oczywiście płatny moduł mający dostosowywać Prestashop do wymagań wynikających z RODO.
       
      Czy jest tu na forum ktoś bliżej zapoznany z tą tematyką, czy ten moduł autentycznie wystarczy?
       
      Może ktoś go testował?
       
      Albo jak planujecie się dostosować do RODO? 
  • Przeglądający

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

  • Aktywni użytkownicy

    Nikt jeszcze nie otrzymał reputacji w tym tygodniu.

  • Statystyki forum

    • Tematów
      7606
    • Postów
      36671
×