Закончили работу по синхронизации CMS 1С-Битрикс и форума vBulletin. Хотелось бы рассказать о проделанной работе и ее особенностях. |
vBulletin считается самым профессиональным и распространенным форумным движком на данный момент и его функционал явно шире, чем функционал форума Битрикс. Кроме того, есть клиенты, которые привыкли работать с этим форумом, а так же бывают ситуации когда форум уже есть и переносить весь контент форума в форум Битрикс просто невозможно.
Так что задача иметь сайт на Битрикс и к нему форум на VB может быть актуальной. Естесвенно в этом случае хочется сделать общую регистрацию и авторизацию, чтобы людям не приходилось 2 раза регистрироваться - сначала на сайте в Битрикс, а потом на форуме в VB. Такая задача перед нами и стояла.
После некоторых раздумий было решено сделать базой для регистрации VB - так было удобнее клиенту. То есть нажимая кнопку "войти" или "регистрация" на страницах сайта Битрикс ссылка вела на авторизацию/регистрацию в VB.
Далее после регистрации/авторизации в VB, пользователь оказывается автоматически созданным и авторизованным в Битрикс-е. Имя, логин и аватарка так же транслируются из VB в Битрикс. Естественно при разлогинивании, пользователь автоматом разлогинивается в обоих системах.
Таким образом с точки зрения пользователя он имеет одну учетку, а реально в системе мы имеем 2 синхронизированные базы пользователей - в VB и в Битриксе.
Фундамент готов, что нам необходимо сделать дальше? Перед нами стоит задача синхронизировать пользователей с vBulletin в 1С-Битрикс, а именно если пользователь прошел регистрацию на стороне vBulletin и подтвердил ее по ссылке которая пришла ему на в письме, то мы должны его зарегистрировать на стороне Битрикса. Что у нас с авторизацией? Все верно та же схема человек проходит авторизацию и в тот же момент вы отсылаем запрос Битриксу на авторизацию даного пользователя. Давай те разберем все по пунктам!
1. Человек проходит регистрацию, на почту он получает письмо в котором есть ссылка подтверждения регистрации. Перейдя по ссылке пользователь подтверждает регистрацию в этот момент у нас отрабатывает файл sitename.ru/forum/register.php - находим участок кода где происходит регистрация после подтверждения. Подключаем наш класс, в конструктор которого передаем информацию о пользователе имя и mail это вся необходимая информация на стороне битрикса (так же нам нужно еще аватарка пользователя ее мы будем обновлять уже в момент авторизации на форум так как при регистрации пользователя ее еще нет)
$save = false;// не запоминать пользователя if($_COOKIE['bbuserid'] > 0){ $save = true; //запоминать пользователя } $user->Authorize($arUser['ID'],$save);