Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Два вида пользователей, две регистрации, одна авторизация

00 голосов
7
Существует два вида пользователей "Обычный" и "НеОбычный". Как сделать чтобы на двух разных страницах были регистрации для каждого, а на главной странице была единая авторизация, но после авторизации определенного вида, она перебрасывала его соответствующий раздел?
спросил 14 Июль, 13 от Kiriel (2,010 баллов)

7 Ответы

00 голосов
Создать группу "необычные пользователи".
Сделать две страницы регистрации, при регистрации устанавливать юзеру нужную группу.
При логине проверять группы залогиненного пользователя, если он "необычный", то делать LocalRedirect в "необычный" раздел.

Все подробности см. класс CUser.
ответил 14 Июль, 13 от Eddie (2,060 баллов)
00 голосов
Цитата
Дмитрий Якинцев пишет:
Создать группу "необычные пользователи".

Сделать две страницы регистрации, при регистрации устанавливать юзеру нужную группу.

При логине проверять группы залогиненного пользователя, если он "необычный", то делать LocalRedirect в "необычный" раздел.

Все подробности см. класс CUser.


А как при регистрации установить юзеру нужную группу? Группа при регистрации ставится в гланом модуле, а где в компоненте main.register сменить, я не нашел...
ответил 02 Сен, 13 от Kiriel (2,010 баллов)
00 голосов
Могу предположить, что эти закомментированные строки в main.register предназначены как раз для подобной цели:
Код
// set user group
//$sGroups = COption::GetOptionString("main", "new_user_registration_def_group", "");
//CUser::SetUserGroup($ID, explode(",", $sGroups));
ответил 30 Ноя, 13 от Eddie (2,060 баллов)
00 голосов
Цитата
Дмитрий Якинцев пишет:
Могу предположить, что эти закомментированные строки в main.register предназначены как раз для подобной цели:

Код
// set user group

//$sGroups = COption::GetOptionString("main", "new_user_registration_def_group", "");

//CUser::SetUserGroup($ID, explode(",", $sGroups));


Пробовал так:
Код
//$sGroups = COption::GetOptionString("main", "new_user_registration_def_group", "9");
//CUser::SetUserGroup($userID, array_merge(CUser::GetUserGroup($userID), array(9)));

Но видимо это не правильно. 9 - идентификатор нужной группы.
ответил 13 Март, 14 от Kiriel (2,010 баллов)
00 голосов
Старанно. Ну, тогда можно использовать событие OnAfterUserRegister или OnBeforeUserRegister. А страницу, очевидно, придется получать из $APPLICATION->GetCurPage().
ответил 04 Июль, 14 от Eddie (2,060 баллов)
00 голосов
Цитата
Дмитрий Якинцев пишет:
Старанно. Ну, тогда можно использовать событие OnAfterUserRegister, у обработчика параметр &$arUser содержит элемент ['USER_ID'], по которому можно проставить группу через CUser::SetUserGroup($USER['USER_ID'],&groups). Установка группы таким образом точно работает. А страницу, очевидно, придется получать из $_SERVER.


А в главном модуле тогда стоит убрать группу для зарегистрировавшихся по умолчанию?

OnBefore использовать после //set user group?
ответил 04 Ноя, 14 от Kiriel (2,010 баллов)
00 голосов
Я думаю даже что SetUserGroup не обязательно юзать, если в OnBeforeUserRegister просто модифицировать $arFields['GROUP_ID'], а менять группы по умолчанию не нужно.
ответил 03 Март, 15 от Eddie (2,060 баллов)

Похожие вопросы

0 голосов
2 ответов
спросил 29 Апр, 14 от AKCEJlb (140 баллов)
0 голосов
2 ответов
0 голосов
4 ответов
0 голосов
6 ответов
0 голосов
3 ответов
спросил 25 Фев, 14 от Lisoska (100 баллов)