Интеграция LiveStreet со сторонними приложениями

Если кто-то ждет в этом топике готового рецепта — увы, его не будет. Но будет полезный инструментарий, который поможет эту самую интеграцию построить.

Иногда, при создании сайта на ЛС, возникает задача интеграции с какими-нибудь сторонними движками. Иногда к форумам каким-нибудь, иногда — иные скрипты. Например, Sypex Dumper.

Что обычно нужно, чтобы написать какой-то модуль/плагин интеграции? Как правило, надо узнать, залогинен ли юзер и/или является ли он админом, и дополнительно — получить параметры конфигурации. Если с первой частью еще худо-бедно можно разобраться в несколько строк скрипта, то со второй — не все так просто. Ведь конфигов — целая куча, причем, параметры могут еще и переопределяться в активированных плагинах. А нормальный доступ к этим параметрам возможен только через специально обученный класс Config.

И вот, чтобы решить разом все эти задачи, решил я написать хелпер API, который это все и делает, и включил его в состав админки (плагина aceAdminPanel), начиная с версии 1.4.70.

Итак, инструкции по использованию.

Для начала в вашем скрипте надо подключить файл:
/plugins/aceadminpanel/include/adm_helper_api.php

И вам становятся доступны следующие функции:
1) HelperApi::IsUser() — залогинен ли текущий пользователь
2) HelperApi::IsAdministrator() — залогинен ли текущий пользователь и является ли он администратором сайта
3) HelperApi::GetConfig(_ключ_конфигурации_) — возвращает параметр конфигурации (но только в том случае, если текущий пользователь — администратор, в противном случае вернет null)
4) HelperApi::GetUserLogin() — возвращает логин текущего пользователя (или false, если пользователь не залогинен)
5) HelperApi::Login(_логин_, _пароль_) — авторизует пользователя по логину и паролю; возвращает true в случае успеха или false, если логин/пароль ошибочны или аккаунт пользователя не активирован
6) HelperApi::Logout() — разлогинивает текущего пользователя

Например, следующий код проверит, залогинен ли юзер, как админ, и если да, то получает параметры для подключения к базе данных (считаем, что скрипт интеграции лежит в корне сайта):
require_once('/plugins/aceadminpanel/include/adm_helper_api.php');
if (HelperApi::IsAdministrator()) {
        $this->CFG['my_host'] = HelperApi::GetConfig('db.params.host');
        $this->CFG['my_port'] = HelperApi::GetConfig('db.params.port');
        $this->CFG['my_user'] = HelperApi::GetConfig('db.params.user');
        $this->CFG['my_pass'] = HelperApi::GetConfig('db.params.pass');
        $this->CFG['my_db']   = HelperApi::GetConfig('db.params.dbname');
}


Для демонстрации работы хелпера используйте скрипт:
ваш_сайт/plugins/aceadminpanel/test-api.php

Хотелось бы услышать мнение разработчиков, насколько им полезная такая фича, и чего им в ней не хватает и/или есть лишнего.

21 комментарий

комментарий был удален
комментарий был удален
avatar
Добавил две функции — Login() и Logout(), а также тестовый файл ваш_сайт/plugins/aceadminpanel/test-api.php, для демонстрации работы.
avatar
Добавьте ID пользователя.
комментарий был удален
avatar
А почему на LiveStreet 0.42 не работает?
Я в классах не понимаю, для меня пока не представляется возможным такое самому написать, но очень нужна интеграция с двумя CMS одновременно, но сейчас задача состоит в том, чтобы можно было авторизироваться, и выходить с аккаунта через отдельный файл GET запросом, не правив файлов ядра.
Буду очень признателен за любую помощь!
Желательно часть кода, или очень простой пример, как для не совсем чайника в программировании.
avatar
Так подключай ядро и вызывай методы из его, а лучше просто в 2 системы поставить 2 способа, так намного производительней. Я, к примеру, просто заменил способ авторизации с одной cms на та что в лс, а сам вход обрабатывался только на лс
avatar
А как именно происходит авторизация В ЛС?
Вчера читал о классах, но не всё понял.
Можно привести пару строчек с подключением ядра и вызовом авторизации/выхода пользователя?
Я то сделал, но некрасиво…
ЛС не принимает по-умолчанию данные с $_GET, а с $_POST, поэтому через адресную строку так просто не получается, только с правкой ядра…
Нужен просто небольшой пример, которого нигде в сети найти не получается(
avatar
А что мешает через пост отправить? Но всё же разве не лучше в другой cms найти место где происходит активация и установить одинаковый способ редактированием первой или второй cms?
avatar
Авторизация происходит в трёх системах сразу: Портале, ЛС, и форуме, такая уж нужна конструкция, поэтому отправленная форма передается на страницу, на которой 3
avatar
И ещё: БД одна, а домены сайтов разные!
avatar
iframe, в адресах которых передаются данные для авторизации. Использовать cUrl и прочие фокусы для POST запросов не вижу надобности.
avatar
Так только школьники делают, что за бред так передавать параметры?

Что тебе мешает использовать одни куки???
avatar
Cookies в:
PHP-Nuke
LiveStreet
PhpBB
СОВСЕМ разные (все размещаются на корневом домене, но что это дает?)
avatar
так что мешает поставить одни?
avatar
Их структура разная, разные методы шифрования, нужно кучу файлов переписывать, но теперь включил API и интеграция заработала)
avatar
Поставить 1 метод шифрования на всех скриптов дело 15мин, зато по нагрузке легче потом будет
avatar
По умолчанию АПИ отключено. Включается в config.api.php
Вместе с плагином идет тестовый пример: test-api.php
avatar
ПРЕОГРОМНЕЙШОЕ СПАСИБО!
Это всё, что мне нужно было услышать)
Теперь всё работает!
avatar
Хороший плагин. Спасибо.
Но есть проблемка. Когда юзер видит сразу не ЛС, а какой-то другой скрипт, то adm_helper_api.php отдает значения, что он незалогинен.
Это как-то можно исправить?
avatar
Что-то у меня ошибка с соединением с БД лезет… нифига понять не могу, кто нить сталкивался?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.