public function actionLogin() { /* @var $user \yii\web\User */ //TODO: GET show view, POST login //TODO: yii negotiator //\Yii::$app->response->format = Response::FORMAT_JSON; $resp = new \stdClass(); $resp->result = false; try { $username = \Yii::$app->request->post('username'); $password = \Yii::$app->request->post('password'); $remember_me = (bool) \Yii::$app->request->post('remember-me') ? 3600 * 24 * 30 : 0; $user = \Yii::$app->user; $identity = Users::findIdentity($username); if (empty($identity) || !$identity instanceof \yii\web\IdentityInterface) { throw new \yii\base\InvalidValueException('wrong login or password', 1); } if (!$identity->validatePassword($password)) { //var_dump($password); throw new \yii\base\InvalidValueException('wrong login or password', 2); } if (!$user->login($identity, $remember_me)) { throw new \yii\base\InvalidValueException('server error. please try later', 3); } //success $resp->result = true; } catch (\Exception $e) { //TODO: mitiple errors support $resp->data = $e->getMessage(); } return json_encode($resp); }
public function test_finds() { $user = new Users(); $user->username = '******'; $user->password = '******'; $user->access_token = 'token'; $user->save(); $user2 = new Users(); $user2->username = '******'; $user2->password = '******'; $user2->access_token = 'token2'; $user2->save(); $this->assertEquals($user->username, $user->getId()); $this->assertEquals($user->username, Users::findIdentity($user->username)->username); $this->assertEquals($user->username, Users::getUserByUsername($user->username)->username); $this->assertEquals($user->access_token, Users::findIdentityByAccessToken($user->access_token)->access_token); }