public function actionConnect()
{
if (Yii::app()->getUser()->isAuthenticated()) {
$this->redirect(Yii::app()->getUser()->returnUrl);
}
$authData = $this->service->getAuthData();
$badLoginCount = Yii::app()->authenticationManager->getBadLoginCount(Yii::app()->getUser());
$scenario = $badLoginCount > 3 ? 'loginLimit' : '';
$form = new LoginForm($scenario);
if (Yii::app()->getRequest()->getIsPostRequest() && !empty($_POST['LoginForm'])) {
$form->setAttributes(Yii::app()->getRequest()->getPost('LoginForm'));
if ($form->validate() && Yii::app()->authenticationManager->login($form, Yii::app()->getUser(), Yii::app()->getRequest())) {
$social = new SocialUser();
$social->user_id = Yii::app()->getUser()->getId();
$social->provider = $authData['service'];
$social->uid = $authData['uid'];
if ($social->save()) {
Yii::app()->getUser()->setFlash(YFlashMessages::SUCCESS_MESSAGE, Yii::t('SocialModule.social', 'Social network successfully attached to your account, you can use it to log in now.'));
$module = Yii::app()->getModule('user');
$redirect = Yii::app()->getUser()->isSuperUser() && $module->loginAdminSuccess ? [$module->loginAdminSuccess] : [$module->loginSuccess];
Yii::app()->authenticationManager->setBadLoginCount(Yii::app()->getUser(), 0);
$this->redirect(Yii::app()->getUser()->getReturnUrl($redirect));
}
} else {
$form->addError('hash', Yii::t('SocialModule.social', 'Wrong email or password!'));
Yii::app()->authenticationManager->setBadLoginCount(Yii::app()->getUser(), $badLoginCount + 1);
}
}
$this->render('connect', ['authData' => $authData, 'model' => $form]);
}