public function actionLogin() { $service = Yii::app()->request->getQuery('service'); /*if (isset($service)) { $authIdentity = Yii::app()->eauth->getIdentity($service); $authIdentity->redirectUrl = Yii::app()->user->returnUrl; $authIdentity->cancelUrl = $this->createAbsoluteUrl('site/login'); if ($authIdentity->authenticate()) { $identity = new ServiceUserIdentity($authIdentity); // успешная авторизация if ($identity->authenticate()) { Yii::app()->user->login($identity); // специальное перенаправления для корректного закрытия всплывающего окна $authIdentity->redirect(); } else { // закрытие всплывающего окна и перенаправление на cancelUrl $authIdentity->cancel(); } } // авторизация не удалась, перенаправляем на страницу входа $this->redirect(array('site/login')); }*/ if (isset($service)) { $authIdentity = Yii::app()->eauth->getIdentity($service); $authIdentity->redirectUrl = Yii::app()->user->returnUrl; $authIdentity->cancelUrl = $this->createAbsoluteUrl('site/login'); // Успешный вход $model = new UserGroupsUser('login'); if ($model->login('service')) { if (Yii::app()->user->userModel && Yii::app()->user->userModel->holes_fresh_cnt) { Yii::app()->user->setFlash('user', Yii::t('user', 'PREVED', array('{count}' => Yii::app()->user->userModel->holes_fresh_cnt, '{user}' => Yii::app()->user->userModel->name ? Yii::app()->user->userModel->name : Yii::app()->user->userModel->username))); } // Специальный редирект с закрытием popup окна $authIdentity->redirect(); } else { // Закрываем popup окно и перенаправляем на cancelUrl $authIdentity->cancel(); } } else { $model = new UserGroupsUser('login'); // if it is ajax validation request if (isset($_POST['ajax']) && $_POST['ajax'] === 'login-form') { echo CActiveForm::validate($model); Yii::app()->end(); } // collect user input data if (isset($_POST['UserGroupsUser'])) { $model->attributes = $_POST['UserGroupsUser']; // validate user input and redirect to the previous page if valid if ($model->validate() && $model->login()) { if (Yii::app()->user->userModel->holes_fresh_cnt) { Yii::app()->user->setFlash('user', Yii::t('user', 'PREVED', array('{count}' => Yii::app()->user->userModel->holes_fresh_cnt, '{user}' => Yii::app()->user->userModel->name ? Yii::app()->user->userModel->name : Yii::app()->user->userModel->username))); } $this->redirect(Yii::app()->user->returnUrl); } } } // display the login form if (Yii::app()->request->isAjaxRequest || isset($_GET['_isAjax'])) { $this->renderPartial('/user/login', array('model' => $model)); } else { $this->render('/user/login', array('model' => $model)); } }
public function auth() { if (Yii::app()->user->isGuest) { $model = new UserGroupsUser('login'); $loginmode = 'regular'; $model->username = Yii::app()->request->getParam('login'); $model->password = Yii::app()->request->getParam('password'); $model->rememberMe = 0; if (Yii::app()->request->getParam('passwordhash')) { $model->password = Yii::app()->request->getParam('passwordhash'); $loginmode = 'fromHash'; } if ($model->validate() && $model->login($loginmode)) { return Yii::app()->user; } elseif ($model->username && $model->password) { $this->error('WRONG_CREDENTIALS'); // Логін та пароль передані, але вони не вірні } else { $this->error('AUTHORIZATION_REQUIRED'); } } else { return Yii::app()->user; } }