Jump to content
Sign in to follow this  
forward7794

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

Recommended Posts

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

 

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

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

Share this post


Link to post
Share on other sites

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

все catalog/...

common/filemanager

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites
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'] = 'Нет прав';

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

Share this post


Link to post
Share on other sites
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:

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

 

 

 

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

 

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

 

 

 

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

 

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

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

 

 

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

Share this post


Link to post
Share on other sites

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

		$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');

Share this post


Link to post
Share on other sites

 

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

		$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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

Все верно

 

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

 

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

 

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

 

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

Share this post


Link to post
Share on other sites

Все верно

 

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 = 'Нет прав';
}
 
 
Это правильно?

Share this post


Link to post
Share on other sites

да

Share this post


Link to post
Share on other sites

да

 

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

 

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/

Share this post


Link to post
Share on other sites

да

 

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

Share this post


Link to post
Share on other sites

Молодец!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.