Авторизация через Loginza в Instant CMS 2

Есть мнение, что бесплатные расширения для бесплатных систем управления содержат вирусы, уязвимости, бэкдоры, или вообще не работают. Так ли это?

Не так давно, я начал свое знакомство с системой управления сайтом Instant CMS 2, нужно было в короткие сроки сделать несложный сайт на готовой системе управления. Посмотрев несколько вариантов я остановился на Instant CMS 2 из-за того, что она обладала досататочно простой и логичной структурой системных файлов и шаблонов оформления. Первое что нужно было сделать на сайте, это авторизацию через социальные сети. Подключать каждую сеть в отдельности достаточно трудозатратно, для простых сайтов лучше использовать специальные сервисы, например Loginza. Этот сервис с недавних пор попал под крыло компании Яндекс, и на мой взгляд это хороший аргумент чтобы его использовать.

Это был для меня первый опыт создания сайта на готовой системе, я был в предвкушении как зайду в каталог модулей, скачаю нужный, установлю его в два клика, и сразу получу нужный результат. Представляя это, я почти начал сомневаться, а верно ли я делаю что работаю на фреймворках, и пишу большинсво кода сам, может быть пришло время... Как оказалось время не пришло. Нужный модуль действительно был найден очень быстро. Установка также не вызвала сложностей. Но дальше ждало разочарование, авторизации не происходило. Модуль не работал.

Первый блин комом не остановил меня в желании изучить систему, и я решил починить модуль, чтобы в процессе узнать систему поближе. Начав разбираться я примерно определил в чем была проблема. Модуль датировался 2015 годом, и с этого времени не обновлялся, а за это время в системе поменяласть структура хранения токенов. Я исправил код модуля под новую структуру, сделал небольшой рефакторинг основных функций, теперь они работали с конкреным user_id, а не абстрактым токеном, начал смотреть что-бы такого еще улучшить дальше, и нашел нечто. Приведу пример кода:

$group_id = $this->request->get('group_id',4);
...
$auth_token = $this->model->createUser($profile, $group_id);

Даже если вы не знаете Instant CMS по названию функций можно понять что тут происходит. Это коллбек, в нем мы получаем group_id из url полученного от провайдера, и создаем юзера с этими данными. Адрес коллбека провайдер получает из браузера пользователя. Не буду рассказывать как, но если его подменить, то можно зарегистрироваться на сайте где установлен данный плагин, как администратор!

Думаю дальнейшие комментарии тут излишни. Я не буду рассуждать на тему ошибся ли автор, или это специально было сделано, каждый решит для себя это сам. Но увидев это, я сделал репозиторий на гитхабе, закачал туда плагин в изначальном виде, и сделал нужные правки. Теперь вы можете использовать авторизацию через сервис Loginza на своем сайте.

https://github.com/denis909/icms2_loginza

Вы можете поддержать дальнейшую разработку бесплатных расширений для Instant CMS, или выразить благодарность за уже созданные тут: https://say10x.ru/project/view?id=7

Теги:
comments powered by HyperComments