Интеграция osTicket в Drupal 7

#drupal #authentication #integration #drupal-7

#drupal #аутентификация #интеграция #drupal-7

Вопрос:

Наша главная веб-страница — Drupal, и мы хотели бы использовать Osticket в качестве нашей системы отслеживания проблем, но с Osticket есть проблема: любой может создавать новые заявки.

Мы можем защитить это с помощью .htaccess, но мы не хотим этого делать; мы хотели бы сделать это защищенным с помощью Drupal: только аутентифицированные пользователи должны получать доступ к странице Osticket.

Есть ли способ добиться этого?

Комментарии:

1. Если есть решение, его должно быть легко найти на Drupal.org, Google или drupalmodules.com . Вы искали? Что вы нашли или какая информация отсутствовала?

2. Вопрос слишком большой. Какого рода интеграцию вы хотите? Аутентифицировать пользователя Drupal в базе пользователей osTicket? Аутентифицировать пользователя osTicket в базе пользователей Drupal? Отображать информацию из osTicket на страницах Drupal?

3. @marcvangend Я сделал это, сэр, но я ничего не нашел, и именно поэтому спрашиваю здесь. Если я задал глупый вопрос, мне действительно жаль @mongolito404, я отредактировал свой вопрос. извините, что сделал это большим.

4. @jone То, что вы спрашиваете, на самом деле не связано с Drupal, вам нужно изменить osTicket, а не Drupal. Знание Drupal поможет, но это не делает его вопросом Drupal.

Ответ №1:

Нашел решение здесь:http://osticket.com/forum/discussion/9910/integrate-with-drupal-7

Вот соответствующая часть:

Преамбула

Так получилось, что я периодически выполнял некоторую работу по интеграции этого в Drupal.

Если вы просто заинтересованы в том, чтобы убедиться, что пользователь зарегистрирован, вы правы, вам нужен bootstrap.inc, и вы правы, в итоге вы получите бесполезные пустые страницы.

Решение

Мне еще предстоит правильно документировать, поэтому попробуйте это и дайте мне знать, если я что-то пропустил, и я посмотрю еще раз, однако следующее должно разрешить проблему:

Дублирующие имена функций

osTicket использует db_query() и (я думаю) db_close() переименуйте функции во что-то вроде db_ost_query(), и все будет в порядке. (Обратите внимание, что я поместил ‘ost’ посередине, чтобы помочь будущему поиску / замене) Я не могу вспомнить, все ли вхождения функции требовали переименования для ее работы, но, вероятно, это хорошая идея сделать это.

Расположение начальной загрузки

При запуске bootstrap возникают всевозможные проблемы при вызове извне корневого каталога Drupal, я отказался от поиска ответа на этот вопрос и просто сохранил в корне файл, который включал бы osticket.

Заголовки, заголовки повсюду

Похоже, Bootstrap любит отправлять дополнительные заголовки, поэтому вы захотите включить свой файл в соответствующее местоположение (например, в один из файлов .inc). Я думаю, что это решило все.

Отказ от ответственности

Конечно, помните, что это будет прерываться при любых обновлениях и любых модах, которые вы добавите, вам придется это учитывать. Если я правильно запомнил, это запустит bootstrap, и вы сможете запустить is_user_logged_in() и показать или перенаправить страницу.

Дополнительные проблемы

На самом деле я имел в виду большую цель при моем вмешательстве, и поэтому я не помню, было ли все идеально уютно после этого добавления.

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

Альтернативное решение

При поиске в Google многие люди предлагали просто создать модуль и поместить его содержимое в iframe внутри него, это могло бы быть достаточно хорошим решением для того, что вы хотите, и потребовало бы намного меньше возни с кодом ostickets.