public static function validateToken($token) { $token = Yii::$app->crypto->decryptToken($token); if ($token['ip'] != Yii::$app->getRequest()->getUserIP()) { return null; } else { if ($token['expire'] > time() + 3600) { $token = Yii::$app->decryptToken(UserIdentity::regenerateToken($token['id'], $token['login'], $token['password'])); } } return $token; }
public function actionIndex() { $model = new UserForm(['scenario' => 'login']); $token = Yii::$app->request->cookies['access']; if (Yii::$app->user->isGuest) { if ($token != null) { if (UserIdentity::validateToken($token)) { Yii::$app->user->login(UserIdentity::findIdentityByAccessToken($token)); } else { UserIdentity::logout(); } } } if ($model->load(Yii::$app->request->post()) && $model->validate() && UserIdentity::login($model->login)) { $model->getByLogin($model->login); if ($model->rememberMe) { UserIdentity::regenerateToken($model->id, $model->login, $model->password); } $schools = School::getByUserId($model->id); if (count($schools) == 0) { return $this->redirect(['personalarea/index']); } else { if (count($schools) == 1) { return $this->redirect(['school/index', 'userId' => $model->id, 'schId' => $schools[0]->sid]); } else { if (count($schools) > 1) { return $this->redirect(['selectschool']); } } } return $this->render('index', ['model' => $model]); } elseif (!$model->load(Yii::$app->request->post())) { if (Yii::$app->user->identity != null) { $model->login = Yii::$app->user->identity->login; $model->password = Yii::$app->user->identity->password; } else { if ($token != null) { $token = Yii::$app->crypto->decryptToken($token); $model->login = $token['login']; $model->password = $token['password']; } } } $this->layout = 'main'; return $this->render('index', ['model' => $model]); }