/**
  * Finds user by [[username]]
  *
  * @return User|null
  */
 public function getUser()
 {
     if ($this->_user === false) {
         $this->_user = User::findByUsername($this->username);
     }
     return $this->_user;
 }
Example #2
0
 /**
  * Finds user by [[username]]
  *
  * @return User|null
  */
 public function getUser()
 {
     if ($this->_user === false) {
         $client = Yii::$app->authClientCollection->getClient('facebook');
         if ($this->fb_token) {
             $token = new \yii\authclient\OAuthToken();
             $token->setToken($this->fb_token);
             $client->setAccessToken($token);
         }
         $picture = $client->api('me?fields=picture', 'GET');
         $profile = $client->api('me?fields=id,first_name,last_name,gender,email', 'GET');
         $user = User::find()->andWhere(['fb_uid' => $profile['id']])->one();
         if (!$user) {
             $user = new User();
             $user->fb_uid = $profile['id'];
             $user->email = $profile['email'];
             $user->generateAuthKey();
             $user->first_name = $profile['first_name'];
             $user->last_name = $profile['last_name'];
             $user->setGender($profile['gender']);
             $user->save();
             if (isset($picture['picture']['data']['url'])) {
                 // save image of user facebook if isset
                 $user->setImageFromFB($picture['picture']['data']['url']);
                 $user->save();
             }
         }
         $this->_user = $user;
     }
     return $this->_user;
 }
 public function actionLogin()
 {
     $model = new LoginForm();
     $jwt = new \Yii::$app->jwt();
     if ($model->load(\Yii::$app->getRequest()->getBodyParams(), '') && $model->login()) {
         $userModel = User::findByUsername($model->username);
         $token['username'] = $userModel->username;
         $userInfo = ['username' => $userModel->username, 'role' => $userModel->role];
         $userInfo['token'] = $jwt::encode($token, $jwt->secret_key);
         echo json_encode($userInfo);
     } else {
         return $model;
     }
 }
 public function testSendEmailCorrectUser()
 {
     $model = new PasswordResetRequestForm();
     $model->email = $this->user[0]['email'];
     $user = User::findOne(['password_reset_token' => $this->user[0]['password_reset_token']]);
     expect('email sent', $model->sendEmail())->true();
     expect('user has valid token', $user->password_reset_token)->notNull();
     $this->specify('message has correct format', function () use($model) {
         expect('message file exists', file_exists($this->getMessageFile()))->true();
         $message = file_get_contents($this->getMessageFile());
         expect('message "from" is correct', $message)->contains(Yii::$app->params['supportEmail']);
         expect('message "to" is correct', $message)->contains($model->email);
     });
 }
Example #5
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = User::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params, '');
     if (!$this->validate()) {
         return $dataProvider;
     }
     if (!$this->lat || !$this->lon) {
         $this->lat = Yii::$app->user->identity->lat;
         $this->lon = Yii::$app->user->identity->lon;
     }
     // @TODO : FULL TEXT NOT WORK(not found to back search only to front)
     $search_string = explode(" ", $this->search_string);
     $query->andWhere(['like', 'first_name', $search_string])->orWhere(['like', 'last_name', $search_string]);
     // @ENDTODO
     if ($this->radius) {
         $query->andWhere("acos(sin(lat * 0.0175) * sin(:lat * 0.0175)\n                + cos(lat * 0.0175) * cos(:lat * 0.0175) *\n                cos((:lng * 0.0175) - (lon * 0.0175))\n                ) * 3959 <= :radius", [':lat' => $this->lat, ':lng' => $this->lon, ':radius' => $this->radius]);
     }
     return $dataProvider;
 }
 /**
  * This method is called after each cest class test method, even if test failed.
  * @param \Codeception\Event\TestEvent $event
  */
 public function _after($event)
 {
     User::deleteAll(['email' => '*****@*****.**', 'username' => 'tester']);
 }