forward7794

[Решено?..] Доступ менеджеру в админку

Рекомендуемые сообщения

forward7794    0

Здравстуйте!

 

Мне нужно сделать так,чтобы менеджер магазин мог заходить в админку и редактировать товары.

Как это сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
riny    190

система - пользователи - группы пользователей - создайте новую группу с доступами к просмотру и изменению к:

все catalog/...

common/filemanager

(возможно еще какие-то нужны будут, тестируйте)

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
forward7794    0

Спасибо большое за помощь!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Julia    1

С этим все понятно, но как сделать , чтобы при в ходе пользователь не видел информацию "Краткий обзор", "Статистика", "Последние 10 заказов", отображаемую в панели в самом начале? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    1 017

в контроллере home.php

На каждую используемую модель проверять права.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Julia    1

в контроллере home.php

На каждую используемую модель проверять права.

 

Можно подробней, не понимаю  :mellow:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    1 017
if ($this->user->hasPermission('modify', 'sale/customer')) {		
		$this->load->model('sale/customer');
		
		$this->data['total_customer'] = $this->model_sale_customer->getTotalCustomers();
		$this->data['total_customer_approval'] = $this->model_sale_customer->getTotalCustomersAwaitingApproval();
} else {
		$this->data['total_customer'] = 'Нет прав';
		$this->data['total_customer_approval'] = 'Нет прав';

Приблизительно так

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Julia    1
if ($this->user->hasPermission('modify', 'sale/customer')) {		
		$this->load->model('sale/customer');
		
		$this->data['total_customer'] = $this->model_sale_customer->getTotalCustomers();
		$this->data['total_customer_approval'] = $this->model_sale_customer->getTotalCustomersAwaitingApproval();
} else {
		$this->data['total_customer'] = 'Нет прав';
		$this->data['total_customer_approval'] = 'Нет прав';

Приблизительно так

 

 

Спасибо за ответ. Не прогер, не все знаю: 

 

У меня версия OpenCart 1.5.3.1

Я так понимаю идет речь про файл home.php, расположенный в директории admin / controller / common /  , приведенный кусок кода необходимо куда-то вставить. Вопрос куда именно?  :unsure:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Julia    1

Ребят, может, кто-нибудь знает, куда этот кусок кода необходимо вставить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    1 017

А что вам не понятно в моем приведенном коде?

if ($this->user->hasPermission('modify', 'sale/customer')) {  

Проверяем доступность следующей модели:

  $this->load->model('sale/customer');

И так несколько раз на каждую из применяемых моделей

 

 

 

Все верно, вы правильно указали путь к файлу контроллера

 

Приведенный код вставить..

Найти подобные строки и замените приведенным кодом (UTF-8 без BOM)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Julia    1

А что вам не понятно в моем приведенном коде?

if ($this->user->hasPermission('modify', 'sale/customer')) {  

Проверяем доступность следующей модели:

  $this->load->model('sale/customer');

И так несколько раз на каждую из применяемых моделей

 

 

 

Все верно, вы правильно указали путь к файлу контроллера

 

Приведенный код вставить..

Найти подобные строки и замените приведенным кодом (UTF-8 без BOM)

 

 

В том-то и дело, что подобных строк нет , версия OpenCard 1.5.3.1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    1 017

Ок... а такие?

		$this->load->model('sale/order');

		$this->data['total_sale'] = $this->currency->format($this->model_sale_order->getTotalSales(), $this->config->get('config_currency'));
		$this->data['total_sale_year'] = $this->currency->format($this->model_sale_order->getTotalSalesByYear(date('Y')), $this->config->get('config_currency'));
		$this->data['total_order'] = $this->model_sale_order->getTotalOrders();

И  чем  будет отличаться мои рекомендации?

Проверяем доступность следующей модели:

if ($this->user->hasPermission('modify', 'sale/order')) {  
$this->load->model('sale/order');

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Julia    1

 

Ок... а такие?

		$this->load->model('sale/order');

		$this->data['total_sale'] = $this->currency->format($this->model_sale_order->getTotalSales(), $this->config->get('config_currency'));
		$this->data['total_sale_year'] = $this->currency->format($this->model_sale_order->getTotalSalesByYear(date('Y')), $this->config->get('config_currency'));
		$this->data['total_order'] = $this->model_sale_order->getTotalOrders();

И  чем  будет отличаться мои рекомендации?

Проверяем доступность следующей модели:

if ($this->user->hasPermission('modify', 'sale/order')) {  
$this->load->model('sale/order');

 

Изменила код на:

 

if ($this->user->hasPermission('modify', 'sale/order')) { 
$this->load->model('sale/order');
 
$this->data['total_sale'] = $this->currency->format($this->model_sale_order->getTotalSales(), $this->config->get('config_currency'));
$this->data['total_sale_year'] = $this->currency->format($this->model_sale_order->getTotalSalesByYear(date('Y')), $this->config->get('config_currency'));
$this->data['total_order'] = $this->model_sale_order->getTotalOrders();
 
} else {
$this->data['total_sale'] = 'Нет прав';
$this->data['total_sale_year'] = 'Нет прав';
$this->data['total_order'] = 'Нет прав';
}
 
Сохранила файл home.php в кодировке UTF-8 без BOM
 
 
По итогу выдает ошибку при входе пользователя с ограниченными возможностями 
 
Fatal error: Call to a member function getOrders() on a non-object in /home/.../public_html/admin/controller/common/home.php on line 177

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Julia    1

Полагаю, что суть ошибки Работает только от обьекта... а обьекта нет. Получается метод ZZZ(model_sale_order) ничего не возвращает и от этого ничего вызываем второй метод XXX()

 

Как верно устранить ошибку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    1 017

Все верно

 

getOrders()  - также находится в модели

 

$this->load->model('sale/order');

 

А ее не загрузили

 

Поэту вызов этого метода и все обработки результатов работы этого метода , тоже нужно проверять на доступность

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Julia    1

Все верно

 

getOrders()  - также находится в модели

 

$this->load->model('sale/order');

 

А ее не загрузили

 

Поэту вызов этого метода и все обработки результатов работы этого метода , тоже нужно проверять на доступность

 

К примеру, у меня есть строка в коде

 

$results = $this->model_sale_order->getOrders($data);

 

Я так понимаю, здесь нужно внести поправки и написать код следующим образом для устранения появляющейся ошибки

 

if ($this->user->hasPermission('modify', 'sale/order')) { 
$results = $this->model_sale_order->getOrders($data);
} else {
$results = 'Нет прав';
}
 
 
Это правильно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    1 017

да

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Julia    1

да

 

Внесла изменения. Стало возможно заходить в админ панель пользователю с ограниченными возможностями. Но в админ панели сверху выскакивает ошибка:

 

Warning: Invalid argument supplied for foreach() in /home/.../public_html/admin/controller/common/home.php on line 183

 

Не знаю правильно ли , но я попробывала заменить 

 

     foreach ($results as $result) {
$action = array();
 
$action[] = array(
'text' => $this->language->get('text_view'),
'href' => $this->url->link('sale/order/info', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'], 'SSL')
);
 
на
 
if(isset($results) && is_array($results)) foreach ($results as $result) {
$action = array();
 
$action[] = array(
'text' => $this->language->get('text_view'),
'href' => $this->url->link('sale/order/info', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'], 'SSL')
);
 
Ошибки теперь нет. Надеюсь, не накосячила с исправлением кода  :-) 

https://opencartforum.com/topic/3917-php-warning-invalid-argument-supplied-for-foreach/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Julia    1

да

 

Все ,вроде, нормально работает. Благодарю за помощь!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    1 017

Молодец!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу