Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] Настроить админку под менеджера как ?


Recommended Posts

Всем привет.

Кто - нибудь вкурсе - как можно настроить админку под менагера так, что бы он мог просматривать и изменять заказы - но не мог их удалять совсем ?

Или если так нельзя - никто не в курсе где хранятся удаленные заказы - где их в админке можно найти ?

Надіслати
Поділитися на інших сайтах

при удалении заказы удаляются, а не сохраняются.

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

Надіслати
Поділитися на інших сайтах

при удалении заказы удаляются, а не сохраняются.

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

Мне так нравятся всегда Ваши ответы - мне даже кажется что Вы какой то особенный - очень умный и тонко устроенный робот - автоответчик :)

так как сделать то едрена мать ? :)

  • +1 4
Надіслати
Поділитися на інших сайтах

формально - я ответил на ваши вопросы и прояснил ситуацию :wink:

фактически - вы не указали используемую версию движка, поэтому конкретики ждете зря :ugeek:

= = =

общая картина:

1) создается новая группа юзеров;

2) в контроллер и модель заказов админки (в методы удаления) добавляются проверки на принадлежность к группе. если менеджер из этой группы - передаем привет :ugeek: , если нет - обрабатываем запрос, как положено.

Надіслати
Поділитися на інших сайтах

формально - я ответил на ваши вопросы и прояснил ситуацию :wink:

фактически - вы не указали используемую версию движка, поэтому конкретики ждете зря :ugeek:

= = =

общая картина:

1) создается новая группа юзеров;

2) в контроллер и модель заказов админки (в методы удаления) добавляются проверки на принадлежность к группе. если менеджер из этой группы - передаем привет :ugeek: , если нет - обрабатываем запрос, как положено.

Версия движка 1.5.4.1

Контроллер и модель заказов админки - это какие файлы - Вы не подскажите ?

Пример кода такой проверки у Вас имеется ?

Надіслати
Поділитися на інших сайтах

мда... забыл про группу юзеров в админке.

вот так это делается:

создается новая группа пользователей в админке (например pureManager), смотрится ее ID

[=== admin/controller/sale/order.php ===]

в метод

private function validateDelete() {
 

после

if (!$this->user->hasPermission('modify', 'sale/order')) {
$this->error['warning'] = $this->language->get('error_permission');
}
 

добавляем

/* [webme] deny order deletions by specified user_group - begin */
$pureManagerGroupId = 11; // вот это ID созданной группы, которой ЗАПРЕЩАЕМ удалять заказы.
if ($this->user->getUsergroupId() == $pureManagerGroupId) {
$this->error['warning'] = $this->language->get('error_order_deletion_denied');
}
/* [webme] deny order deletions by specified user_group - end */
 

в языковой файл [=== admin/language/russian/sale/order.php ===]

добавляем

/* [webme] deny order deletions by specified user_group - begin */
$_['error_order_deletion_denied']			 = 'Пользуясь моментом, хочу передать привет дяде из Бобруйска.<br />Дядя, превед!';
/* [webme] deny order deletions by specified user_group - end */
 

[=== system/library/user.php ===] приводим к виду

добавляем себе всё, что отделено комментариями

/* [webme] deny order deletions by specified user_group - begin */
/* [webme] deny order deletions by specified user_group - end */
 
 

<?php
class User {
private $user_id;
private $username;
private $permission = array();
/* [webme] deny order deletions by specified user_group - begin */
private $usergroup_id;
/* [webme] deny order deletions by specified user_group - end */

public function __construct($registry) {
$this->db = $registry->get('db');
$this->request = $registry->get('request');
$this->session = $registry->get('session');

if (isset($this->session->data['user_id'])) {
$user_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user WHERE user_id = '" . (int)$this->session->data['user_id'] . "' AND status = '1'");

if ($user_query->num_rows) {
$this->user_id = $user_query->row['user_id'];
$this->username = $user_query->row['username'];
/* [webme] deny order deletions by specified user_group - begin */
$this->usergroup_id = $user_query->row['user_group_id'];
/* [webme] deny order deletions by specified user_group - end */

$this->db->query("UPDATE " . DB_PREFIX . "user SET ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "' WHERE user_id = '" . (int)$this->session->data['user_id'] . "'");

$user_group_query = $this->db->query("SELECT permission FROM " . DB_PREFIX . "user_group WHERE user_group_id = '" . (int)$user_query->row['user_group_id'] . "'");

$permissions = unserialize($user_group_query->row['permission']);

if (is_array($permissions)) {
foreach ($permissions as $key => $value) {
$this->permission[$key] = $value;
}
}
} else {
$this->logout();
}
}
}

public function login($username, $password) {
$user_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user WHERE username = '" . $this->db->escape($username) . "' AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) OR password = '" . $this->db->escape(md5($password)) . "') AND status = '1'");

if ($user_query->num_rows) {
$this->session->data['user_id'] = $user_query->row['user_id'];

$this->user_id = $user_query->row['user_id'];
$this->username = $user_query->row['username'];
/* [webme] deny order deletions by specified user_group - begin */
$this->usergroup_id = $user_query->row['user_group_id'];
/* [webme] deny order deletions by specified user_group - end */

$user_group_query = $this->db->query("SELECT permission FROM " . DB_PREFIX . "user_group WHERE user_group_id = '" . (int)$user_query->row['user_group_id'] . "'");

$permissions = unserialize($user_group_query->row['permission']);

if (is_array($permissions)) {
foreach ($permissions as $key => $value) {
$this->permission[$key] = $value;
}
}

return true;
} else {
return false;
}
}

public function logout() {
unset($this->session->data['user_id']);

$this->user_id = '';
$this->username = '';

session_destroy();
}

public function hasPermission($key, $value) {
if (isset($this->permission[$key])) {
return in_array($value, $this->permission[$key]);
} else {
return false;
}
}

public function isLogged() {
return $this->user_id;
}

public function getId() {
return $this->user_id;
}

public function getUserName() {
return $this->username;
}

/* [webme] deny order deletions by specified user_group - begin */
public function getUsergroupId() {
return $this->usergroup_id;
}
/* [webme] deny order deletions by specified user_group - end */
}
?>
 

post-3682-0-19396900-1360137786_thumb.png

  • +1 1
Надіслати
Поділитися на інших сайтах

Ниче себе - сейчас попробую - это засунуть в код .

Спасибо

Надіслати
Поділитися на інших сайтах

Круто все работает - ГРАНД МЕРСИ

Надіслати
Поділитися на інших сайтах

  • 2 months later...

Хороший вопрос, нашел эту тему по запросу getUsergroupId()

а вот такой вопрос, как запретить менеджеру видеть при входе в админку статистику чего было продано и на сколько. Т.е. верхние 2 блока, менеджеру, а точнее, кладовщику, не нужны, надо только отмечать заказы кто забрал со склада и ставить им статус "Завершено". (это я решил способом настройки "группы пользователей" там и отметил только изменение и просмотр "Заказы"). А вот статистика нафиг ему с глаз долой. В идеале еще скрыть ему все пункты меню с глаз долой, чтоб не было соблазна хакеризмом заниматься, но думаю на основе того же алгоритма и это решается.

Надіслати
Поділитися на інших сайтах


Так, на второй вопрос нашел ответ {на просторах тырнета} соответственно, запилил по этому же принципу и ответ на первый вопрос.

 

Как скрыть меню. Берете файл шаблона админки header.tpl (admin/view/template/common/header.tpl). На основе него создаете новый шаблон, предварительно удалив из него все лишнее.
Затем, в файл admin/model/user/user.php добавляете код:

 

public function getUserGroupId($user_id) {
    $query = $this->db->query("SELECT DISTINCT user_group_id FROM " . DB_PREFIX . "user WHERE user_id = '" . (int)$user_id . "'");
    if(isset($user_id)) 
    return $query->row['user_group_id'];
}

В файле admin/controller/common/header.php ищете:

$this->template = 'common/header.tpl';
И заменяете на:
$this->load->model('user/user');
if ($this->model_user_user->getUserGroupId($this->user->getId()) == 1) {
    $this->template = 'common/header.tpl';
} else {
    $this->template = 'common/header-usergroup.tpl';
}  

 

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

 

В файле admin/controller/common/home.php ищете:

 

$this->template = 'common/home.tpl';

заменяем на это (функция опредедления уже внесена выше в файле user.php)

 

        $this->load->model('user/user');
        if ($this->model_user_user->getUserGroupId($this->user->getId()) == 1) {
            $this->template = 'common/home-usergroup.tpl';
        } else {
            $this->template = 'common/home.tpl';
        }

 

Вуаля, все заработало.

Змінено користувачем lastrong
cenzoRED
Надіслати
Поділитися на інших сайтах


  • 1 year later...

Решено:

Добавить ДВУХ менеджеров, с разными доступами.
См предыдущий пост + мой :)

 

 if ($this->model_user_user->getUserGroupId($this->user->getId()) == 11) {
            $this->template = 'common/home_user.tpl';
        } 
   
        elseif ($this->model_user_user->getUserGroupId($this->user->getId()) == 12) {
            $this->template = 'common/home_K.tpl';
        } 
              else {
            $this->template = 'common/home.tpl';
        }

 
Надіслати
Поділитися на інших сайтах


  • 7 months later...

Всем привет.

Кто - нибудь в курсе - как можно настроить админку под менагера так, что бы он мог редактировать описание товара - но не мог его удалять или удалять товар в списке?

Т.е.  задача только правка текста к товару....ocStore Version 1.5.4.1

Надіслати
Поділитися на інших сайтах


По аналогии, как выше описывали для заказов, править для товаров

 

Чего я реально не понимаю - это самой сути хотелок "мог редактировать - но не мог удалять" :ugeek:

Ну дадите вы права, не удалит, а так наредактирует (например заполнит все нулями), что итог будет ненамного лучше удаления :-D :-D :-D

 

Не?

Надіслати
Поділитися на інших сайтах

  • 2 months later...
AlexDW, Заполнит все нулями, получит предупреждение, что так делать нельзя. При рецидиве мы будем знать, что наш манагер плут и мошенник. А если он удаляет по тихому, то мы и не догадываемся ниочем.
Надіслати
Поділитися на інших сайтах


  • 11 months later...

Так, на второй вопрос нашел ответ {на просторах тырнета} соответственно, запилил по этому же принципу и ответ на первый вопрос.

 

Как скрыть меню. Берете файл шаблона админки header.tpl (admin/view/template/common/header.tpl). На основе него создаете новый шаблон, предварительно удалив из него все лишнее.

Затем, в файл admin/model/user/user.php добавляете код:

public function getUserGroupId($user_id) {
    $query = $this->db->query("SELECT DISTINCT user_group_id FROM " . DB_PREFIX . "user WHERE user_id = '" . (int)$user_id . "'");
    if(isset($user_id)) 
    return $query->row['user_group_id'];
}

В файле admin/controller/common/header.php ищете:

$this->template = 'common/header.tpl';
И заменяете на:
$this->load->model('user/user');
if ($this->model_user_user->getUserGroupId($this->user->getId()) == 1) {
    $this->template = 'common/header.tpl';
} else {
    $this->template = 'common/header-usergroup.tpl';
}  

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

 

В файле admin/controller/common/home.php ищете:

$this->template = 'common/home.tpl';

заменяем на это (функция опредедления уже внесена выше в файле user.php)

        $this->load->model('user/user');
        if ($this->model_user_user->getUserGroupId($this->user->getId()) == 1) {
            $this->template = 'common/home-usergroup.tpl';
        } else {
            $this->template = 'common/home.tpl';
        }

Вуаля, все заработало.

Привет, странно повторил всё,

1. Скопировал header.tpl,

2. Переименовал в header_users.tpl,

3. Залил на хостинг в admin/view/template/common/header_users.tpl, 

4. В папке common теперь находятся два файла header.tpl и header_users.tpl

5. В файл admin/model/user/user.php, в конце кода добавляем:

        public function getUserGroupId($user_id) {

        $query = $this->db->query("SELECT DISTINCT user_group_id FROM " . DB_PREFIX . "user WHERE user_id = '" . (int)$user_id . "'");
        if(isset($user_id)) 
        return $query->row['user_group_id'];
        }
6. В файле admin/controller/common/header.php ищете:
$this->template = 'common/header.tpl'; 
 
И заменяете на:
$this->load->model('user/user');
if ($this->model_user_user->getUserGroupId($this->user->getId()) == 1) {
    $this->template = 'common/header.tpl';
} else {
    $this->template = 'common/header-usergroup.tpl';

 

После всех манипуляций, перезагрузки браузера и на странице магазина и в админке, вроде бы всё хорошо

Но после выхода из админки пишет:

Notice: Error: Could not load template /admin/view/template/common/header-usergroup.tpl! in /system/engine/controller.php on line 70

 

Ещё у меня вопрос: я что то не понял, а где идёт подмена header.tpl на header_users.tpl

Надіслати
Поділитися на інших сайтах


Кажется понял в чём ошибка:

 

6. В файле admin/controller/common/header.php ищете:
$this->template = 'common/header.tpl'; 
 
И заменяете на:
$this->load->model('user/user');
if ($this->model_user_user->getUserGroupId($this->user->getId()) == 1) {
    $this->template = 'common/header.tpl';
} else {
    $this->template = 'common/header-usergroup.tpl';

За место header-usergroup.tpl надо поставить моё название header_users.tpl !!!

 

Просто автор поста ни где в тексте не написал, что он при переименовании файла header.tpl, назвал его header-usergroup.tpl

Чем ввёл меня в лёгкое заблуждение.

А вообще статья супер - долго искал в интернете ответ на свой вопрос, и только здесь получил ответ. Спасибо автору!!!

Змінено користувачем VladisOK
Надіслати
Поділитися на інших сайтах


  • 2 months later...
  • 1 month later...

----------------------------------------------------------------------

to Krot:

Проверенно на версии 1.5.6.4, для 2.+ не подойдёт

----------------------------------------------------------------------

 

Прошу специалистов помочь адаптировать это же решение, но под 2.0 + версий

 

P.S. Считаю, что это решение должно быть по умолчанию в движке OpenCart, нет разрешения для менеджеров управлять какой либо из категорий в админке, значит и нет визуального отображения этих категорий для менеджеров. Не понимаю, из каких соображений это не сделано.

Змінено користувачем VladisOK
Надіслати
Поділитися на інших сайтах


  • 1 year later...
В 24.04.2013 в 08:38, lastrong сказал:

Так, на второй вопрос нашел ответ {на просторах тырнета} соответственно, запилил по этому же принципу и ответ на первый вопрос.

 

Как скрыть меню. Берете файл шаблона админки header.tpl (admin/view/template/common/header.tpl). На основе него создаете новый шаблон, предварительно удалив из него все лишнее.
Затем, в файл admin/model/user/user.php добавляете код:

 


public function getUserGroupId($user_id) {
    $query = $this->db->query("SELECT DISTINCT user_group_id FROM " . DB_PREFIX . "user WHERE user_id = '" . (int)$user_id . "'");
    if(isset($user_id)) 
    return $query->row['user_group_id'];
}
 

В файле admin/controller/common/header.php ищете:


$this->template = 'common/header.tpl';
И заменяете на:

$this->load->model('user/user');
if ($this->model_user_user->getUserGroupId($this->user->getId()) == 1) {
    $this->template = 'common/header.tpl';
} else {
    $this->template = 'common/header-usergroup.tpl';
}  

 

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

 

В файле admin/controller/common/home.php ищете:

 


$this->template = 'common/home.tpl';

заменяем на это (функция опредедления уже внесена выше в файле user.php)

 


        $this->load->model('user/user');
        if ($this->model_user_user->getUserGroupId($this->user->getId()) == 1) {
            $this->template = 'common/home-usergroup.tpl';
        } else {
            $this->template = 'common/home.tpl';
        }

 

Вуаля, все заработало.

Call to undefined method ModelUserUser::getUserCategories() 

 

 

Когда захожу в Пользователи и нажимаю изменить права

Надіслати
Поділитися на інших сайтах


  • 1 month later...
В 06.02.2013 в 10:57, afwollis сказал:

[=== system/library/user.php ===] приводим к виду

добавляем себе всё, что отделено комментариями

 


/* [webme] deny order deletions by specified user_group - begin */
/* [webme] deny order deletions by specified user_group - end */
 

 

Подскажите пожалуйста, что конкретно прописывать system/library/user.php ?

Змінено користувачем VadimD
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.