application\modules\social\controllers\UserController::actionConnect PHP Method

actionConnect() public method

public actionConnect ( )
    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]);
    }