OpenCart, чтобы остановить просмотр страницы индекса до входа в систему - PullRequest
1 голос
/ 13 октября 2011

Я использую OpenCart в одном проекте,

все работает нормально, но я не могу найти опцию, чтобы остановить просмотр домашней страницы до входа в систему.

На самом деле это требование проекта, никто не может увидеть дом до входа в систему.

есть ли способ сделать это с помощью OPEN CART?

Спасибо

Ответы [ 3 ]

1 голос
/ 13 октября 2011

это не проверено, но должно указывать правильное направление:

(OpenCart 1.4.9.x)

Сохранить это в: catalog / controller / common / check_login.php

<?php
class ControllerCommonCheckLogin extends Controller {
    public function index() {
        if (!$this->customer->isLogged()) {
            // Require to be logged in
            $ignore = array(
                'account', 'payment'
            );

            $match = false;
            if (isset($this->request->get['route'])) {
                foreach ($ignore as $i) {
                    if (strpos($this->request->get['route'], $i) !== false) {
                        $match = true;
                        break;
                    }
                }
            }

            // Show site if logged in as admin
            $this->load->library('user');
            $this->registry->set('user', new User($this->registry));

            if (!$this->user->isLogged() && !$match) {
                return $this->forward('account/login');
            }
        }
    }
}
?>

Редактировать /index.php

Найти:

// Maintenance Mode
$controller->addPreAction(new Action('common/maintenance/check'));

Добавить после:

// Login Check
$controller->addPreAction(new Action('common/check_login'));

По существу использовать ту же логику, что и для обслуживанияпроверьте ... Большая разница в том, что он ищет слово "account" в строке ... Если он находит его, он позволяет отображать страницу, если нет, он перенаправляет на страницу входа ...

Используйте слово «account» вместо «login» в случае, если им нужно зарегистрироваться ... Все страницы аккаунта уже проверяют наличие входа в систему, поэтому здесь не о чем беспокоиться ...

Опять же, не проверено, чтобы выможет потребоваться настроить одну или две вещи - но это должно / может сработать, добавив код


check_login.php для opencart 1.5.3

<?php
class ControllerCommonCheckLogin extends Controller {
    public function index() {
        // Require to be logged in
        if (!$this->customer->isLogged()) {

            // Require to be logged in
            $ignore = array(
                'account','payment'
            );

            $match = false;
            if (isset($this->request->get['route'])) {
                foreach ($ignore as $i) {
                    if (strpos($this->request->get['route'], $i) !== false) {
                        $match = true;
                        break;
                    }
                }
            }

            // Show site if logged in as admin
            $this->load->library('user');

            $this->user = new User($this->registry);

            if (!$this->user->isLogged() && !$match) {
                $this->redirect($this->url->link('account/login'));
            }
        }
    }
}
?>
1 голос
/ 13 октября 2011

Я ничего не знаю о встроенном, но вы можете сделать это самостоятельно.Исходя из ваших ответов на вопросы @ CarpeNoctumDC, вам, возможно, придется немного покопаться, но с этого следует начать:

system / library / customer.php

public function isLogged() { ... }

каталог / контроллер / общий / home.php

if (!$this->customer->isLogged()) {
    // login page
    exit;
}
0 голосов
/ 14 октября 2011

Правильный способ сделать это - открыть

/ каталог / контроллер / общие / home.php

найдите public function index() { вверху кода, а после него поставьте

if(!$this->customer->isLogged()) {
    $this->session->data['redirect'] = $this->url->link('common/home');
    $this->url->redirect('account/login', '', 'SSL');
}

Если вы не уверены, как это сделать правильно, просто посмотрите на первые несколько строк после public function index() { в

/ каталог / контроллер / счет / account.php

установка вашего кода в домашнем контроллере на common/home вместо account/account

...