Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
freelancer

Кросс регистрация в IPB

Рекомендованные сообщения

Доброго времени суток всем,

 

Возникла необходимость сделать кросс регистрацию/вход/удаление пользователей между двумя сайтами. С одной из CMS я знаком очень хорошо, но вот приходится первый раз работать с IPBoard. Собственно вопрос: Каким образом данный функционал можно реализовать проще всего? Я поискал решение данной проблемы в инете и нашел несколько способов:

 

1. IPS connect

2. Хуки

3. Изменение функций

 

1-ый способ уместен лишь в том случае, когда пользователь с сайта A(в данном случае это мой сайт) смог зарегистироваться на сайте B(форум IPboard) - по крайней мере я именно этот вариант увидел. Но как в это случае мне взять данные после того как пользователь зарегистрировался на форуме такие как логин, пароль и так далее, чтобы передать их в функцию регистрации сайта A?

 

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

 

3. Просто найти нужные функции регистрации, обновления, удаления и перед внесением обработанных данных в БД IPBoard отправить их в соотвествущую функцию моего сайта.

 

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

Поделиться сообщением


Ссылка на сообщение

1. Модуль авторизации из внешней базы данных.

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

 

2. memberSync.php

В структуре приложений входит файл memberSync.php* который содержит методы onCreateAccount, onLogin, onLogOut и вызываются в свою очередь при выполнении этих событий. Таким образом можно синхронизировать пользователей форума и сайта.

 

Если речь идет о WP есть уже готовые решения для двухсторонней интеграции этих систем.

 

Интеграция

Единная регистрация

 

* - у IPS 4 другая архитектура.

Поделиться сообщением


Ссылка на сообщение

Благодарю за ответ. использовал 2-ой способ, регистация с IPBoard на мой сайт проходит на ура. Но теперь возникла проблема в другой штуке:

 

Когда я на стороннем сайте в скрипте делаю следующее:

 

require_once $path . '/init.php';

 

Мне выводит ошибку

Fatal error:  Call to undefined method IPS\collections\Item::parents() in /home/probike/public_html/forums/system/Content/Controller.php on line 405

 

Хотя как я понял такой ошибки не должно возникать, так как в большинстве примеров по работе работе с ipboard через внешние файлы, подключается данный файл, но у меня он почему-то выдает ошибки. Вы незнаете как это можно пофиксать ?

Поделиться сообщением


Ссылка на сообщение

<?php

require_once 'init.php';
\IPS\Dispatcher\Front::i()->init();

var_dump( \IPS\Member::loggedIn()->member_id );

?>

 

Никаких ошибок при его подключении не вижу.

Поделиться сообщением


Ссылка на сообщение

IPS\collections\Item - класс приложения Collections (Garage).

Тут правильнее будет написать автору. Или дебажьте код, данные для этого есть.

Поделиться сообщением


Ссылка на сообщение

Там дело даже не в апи, приложение на самом форуме работает не правильно.

Поделиться сообщением


Ссылка на сообщение

Доброго времени суток. Спасибо за ваши ответы. Исправил ошибку, возникавшую при подключении инициализационного файла IPBoard. Проблема заключалась в том, что я подключал данный файл внутри функции класса CMS системы, где классы по сути не были в областях имен (namespaces) вот он и ругался, мол тут не используется наймспейс, а откуда я тебе найду нужный метод Parents(). Проблему решил подключением форума внекласса ( в самом начале индексного файла CMS). Но тут возникла, последнее затруднение - я не могу поменять пароль пользователя, используя объект IPS\Member.

 

$login_type = "email"; 
try
 {
           $member = \IPS\Member::load( $account_info['Mail'], $login_type );
       }
       catch ( \OutOfRangeException $e )
       {
           \IPS\Output::i()->error( 'node_error', '2C114/2', 404, '' );
       }

       $member->members_pass_salt = $member->generateSalt();
       $member->members_pass_hash = $member->encryptedPassword( $new_password );
       $member->save();

 

Пароль зараза не работает, хотя метод save судя по документации должен создавать/обновлять данные пользователя. Может быть я чего не так делаю ? Заранее спасибо за вашу помощь.

Поделиться сообщением


Ссылка на сообщение

В загружаете пользователя по email, проверьте чтобы этот email в таблице был уникальным.

Проверьте содержимое пароля, не применяется ли к нему какое-то преобразование к спецсимволом в сторонней кмс.

 

 

Проблема заключалась в том, что я подключал данный файл внутри функции класса CMS системы, где классы по сути не были в областях имен (namespaces) вот он и ругался

У вас эта ошибка присутствует в самом приложение на форуме, только в другой строке. Если бы дело было в одном пространстве имен, api бы отвалилась сразу с первом вызовом из пространства форума.

Поделиться сообщением


Ссылка на сообщение
В загружаете пользователя по email, проверьте чтобы этот email в таблице был уникальным.

Проверьте содержимое пароля, не применяется ли к нему какое-то преобразование к спецсимволом в сторонней кмс.

 

Спасибо за вашу помощь, мост между двумя системами работает на ура и тут буквально пару дней назад пришел запрос "зацепить" регистрирующихся пользователей из Фейсбука, Твиттера и так далее. И тут у меня из-за незнания IPBoard возник вопрос:

- Как можно зацепить данные пользователя, который регистрируется на сайте при помощи сторонних модулей типа фесбука и так далее ? Я надеюсь не сильно надоел вас такого рода вопросами

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

Т.е. получается их никак нельзя перехватить ?

 

Я думал что можно зацепиться где в функционале, мол когда он создает пользователя он ему генерит какой-то пароль ( и в этот момент мне подцепиться и слить этот пароль к себе в БД). Есть ли какие-нибудь предложения? Оказывается сейчас по статистике большое количество людей регается при помощи соц сетей.

Поделиться сообщением


Ссылка на сообщение

Генерировать пароль можно в том же MemberSync, другое дело что он не сможет им авторизироватся на сайте потому что он его не знает. В этом случае придется ему высылать пароль либо на емайл либо на в ПМ.

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...