OctoberCMS: Как узнать, был ли пользователь авторизован или зарегистрирован в плагине входа в социальную сеть?

Я использую подключаемый модуль входа в социальную сеть для входа / регистрации в учетных записях Google. Если пользователь регистрируется впервые, я хочу перенаправить его на страницу «Редактировать профиль», чтобы они могли заполнить информацию своего профиля, и если они не являются новым пользователем и только что вошли в систему, я хочу перенаправить их на страницу домашняя страница после успешного входа в систему. Как я могу проверить, новый ли пользователь? Может нам нужно новое событие типа flynsarmy.sociallogin.afterRegister? Я попытался прослушать rainlab.user.register, но он не сработал после регистрации пользователя.


person B Faley    schedule 19.11.2017    source источник
comment
Вы, вероятно, сможете подключиться к событию create модели User, не так ли? Упомянутое вами событие запускается в компоненте (github .com / rainlab / user-plugin / blob / master / components /) и, следовательно, не будет выполняться, если вы используете социального провайдера.   -  person Alex Guth    schedule 19.11.2017
comment
@AlexGuth rainlab.user.register должен быть запущен, потому что Auth::register() вызывается в плагине для регистрации нового пользователя.   -  person B Faley    schedule 19.11.2017
comment
Auth :: register () не запускает это событие, если я полностью не пропускаю код. Фактически он запускается в самом компоненте. Вот почему вы не можете его поймать.   -  person Alex Guth    schedule 19.11.2017


Ответы (1)


На данный момент я имею в виду, что просто из вашего собственного плагина расширьте таблицу User (добавьте дополнительный столбец first_time или fist_time_register) и присвойте ему значение по умолчанию «1».

Я видел в коде, когда он пытается найти пользователя с поставщиком (Google и т. Д.), Если он обнаруживает, что он вернется, войдет в него и перенаправит на страницу успеха.

если не найден, зарегистрируйте его, войдите в систему, затем перенаправьте на страницу успеха.

(проблема в том, что у него нет события после регистрации :( поскольку у него есть flynsarmy.sociallogin.registerUser, но он срабатывает до регистрации, поэтому ..)

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

ОБНОВЛЕНИЕ


Я проверил код плагина rainlabn.user

он зарегистрирует пользователя, используя Auth :: register (.. args), а затем вызовет событие rainlab.user.register

То же самое касается oc-sociallogin-plugin, но но он регистрирует пользователя с помощью Auth :: register (.. args), тогда он не запускается < strong> rainlab.user.register вместо этого запускает событие flynsarmy.sociallogin.registerUser, а также запускает его перед методом регистрации.

Итак, я предполагаю, что в этом случае rainlab.user.register даже не сработает, когда пользователь зарегистрирован с помощью подключаемого модуля oc-sociallogin-plugin.

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

person Hardik Satasiya    schedule 21.11.2017