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

Права пользователей на категории товара


AlexeyS

Recommended Posts

Подскажите, возможно ли такое...

или подскажите как такое реализовать.

 

- Назначить пользователю (П) права только на определенную категорию (К).

Т.е. чтобы (П) мог добавлять и редактировать товары, которые принадлежат к (К) 

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


Для примера, открываете файл: admin/controller/user/user_permission.php
там находите строку вида:

if (isset($this->request->post['permission']['modify'])) {

перед ней пишите что то типа:

                // Categories
		$this->load->model('catalog/category');
				
		$categories = $this->model_catalog_category->getAllCategories();

		$this->data['categories'] = $this->getAllCategories($categories);

                if (isset($this->request->post['permission']['edit'])) {
			$this->data['edit'] = $this->request->post['permission']['edit'];
		} elseif (isset($user_group_info['permission']['edit'])) {
			$this->data['edit'] = $user_group_info['permission']['edit'];
		} else { 
			$this->data['edit'] = array();
		}


Потом находите строку вида:

protected function validateDelete() {

перед ней добавляете:

	private function getAllCategories($categories, $parent_id = 0, $parent_name = '') {
		$output = array();

		if (array_key_exists($parent_id, $categories)) {
			if ($parent_name != '') {
				$parent_name .= $this->language->get('text_separator');
			}

			foreach ($categories[$parent_id] as $category) {
				$output[$category['category_id']] = array(
					'category_id' => $category['category_id'],
					'name'        => $parent_name . $category['name']
				);

				$output += $this->getAllCategories($categories, $category['category_id'], $parent_name . $category['name']);
			}
		}

		return $output;
	}

а так же в файле: admin/view/template/user/user_group_form.tpl

находите строку:

      </table>
</form> 

перед ней добавляете:

 <tr>
            <td><?php echo 'Права на редактирование'; ?></td>
            <td><div class="scrollbox">
                  <?php $class = 'odd'; ?>
                  <?php foreach ($categories as $category) { ?>
                  <?php $class = ($class == 'even' ? 'odd' : 'even'); ?>
                  <div class="<?php echo $class; ?>">
                    <?php if (in_array($category['category_id'], $edit)) { ?>
                    <input type="checkbox" name="permission[edit][]" value="<?php echo $category['category_id']; ?>" checked="checked" />
                    <?php echo $category['name']; ?>
                    <?php } else { ?>
                    <input type="checkbox" name="permission[edit][]" value="<?php echo $category['category_id']; ?>" />
                    <?php echo $category['name']; ?>
                    <?php } ?>
                  </div>
                  <?php } ?>
                </div>
                <a onclick="$(this).parent().find(':checkbox').attr('checked', true);"><?php echo $text_select_all; ?></a> / <a onclick="$(this).parent().find(':checkbox').attr('checked', false);"><?php echo $text_unselect_all; ?></a></td>
          </tr> 

Получится что то типа (в настройке прав пользователя):

4e63b8ec7a7ff67f77d4b87955a375f18e6aeadb

 

а уже в самих TPL-ах, ставите на условия циклы по типу:

<?php if ($this->user->hasPermission('edit', $category['category_id'])) { ?>
	<?php foreach ($category['action'] as $action) { ?>
            [ <a href="<?php echo $action['href']; ?>"><?php echo $action['text']; ?></a> ]
         <?php } ?>
<?php } else { ?>
       <a style="color:green;"><?php echo 'Нет прав'; ?></a>
<?php } ?>

дальше - уже виртуозность...

 

P.S. Это пример для редактирования категорий, я бы проставил ещё проверку на человеческий фактор, если в браузере ввести в ручную id категории (в самой форме) по типу:

if (!isset($this->request->get['category_id'])) {
			$this->data['action'] = $this->url->link('catalog/category/insert', 'token=' . $this->session->data['token'], 'SSL');
		} else {
			if ($this->user->hasPermission('edit', $this->request->get['category_id'])) { 
			$this->data['action'] = $this->url->link('catalog/category/update', 'token=' . $this->session->data['token'] . '&category_id=' . $this->request->get['category_id'], 'SSL');
			} else {
			$this->redirect($this->url->link('catalog/category', 'token=' . $this->session->data['token'], 'SSL'));
			}
		}
Надіслати
Поділитися на інших сайтах

  • 2 months later...

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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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