Функции администратора в пользовательской части OpenCart. IsAdmin?

PHP инженеры и разработчики, знакомые с большим кругом CMS и самописными решениями однозначно понимают значение функции, которую встречают в малознакомом коде, если она называется isAdmin();

Как я уже писал в предыдущем посте, пользовательская и администраторская часть OpenCart живут своими отдельными жизнями и почти не пересекаются. У каждого свои контроллеры, модели и представления. А так иногда хочется «запилить» что-то исключительно для администратора.

Из свежих доработок, которые я делал была кнопка Редактирования товаров, а так же вывод всех Статей (опубликованных и нет), если пользователь залогиненый Администратор. Рассматривать точечные решения задач сегодня нет настроения, так что тут будет просто шпаргалка для разработчиков «куда копать, если хочется написать что-то только для админа».

В сети встречаются решения, когда проверка isAdmin() производится в Представлении (во фронт-энде). Меня от таких методов немного коробит. Правильно со всех точек зрения делать это в Контроллере, т.к. в принципе эта функция относится к логике работы OpenCart.

Итак, чтобы проверить является ли пользователь залогиненым Администратором в OpenCart 1.5.x используйте условие:

$this->load->library('user');
			
$this->user = new User($this->registry);
			
if($this->user->isLogged()) {
	// произвольный код функции для Администратора
}

Для OpenCart 2.x и 3.x подойдет такое решение:

if (!empty($this->session->data['user_id']) && !empty($this->session->data['token'])) {
 // проивольный код функции для Администратора
 }

Что характерно, для второго решения нет необходимости подключать библиотеку User. Теоретически такое же решение есть и для OpenCart 1.5.x, но автор не утруждал себя поисками, т.к. указаное решение вполне решает задачу в поставленных рамках.

Игорь Чишкала

Директор по технологиям в SoftForge.
Люблю ИТ, пишу технические статьи в этом блоге или для сайта фриланс-биржи Upwork. Кодю на PHP с использованием фреймворков Laravel или Symfony.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *