예제 #1
0
 public function checkUsername($attribute, $param)
 {
     $existUser = Member::find()->where(['=', 'username', $this->membername])->one();
     if (!$existUser) {
         $this->addError($attribute, '该用户不存在!');
     }
 }
예제 #2
0
 /**
  * Deletes an existing MemberCategory model.
  * If deletion is successful, the browser will be redirected to the 'index' page.
  * @param integer $id
  * @return mixed
  */
 public function actionDelete($id)
 {
     $memberModel = Member::find()->andWhere(['category_id' => $id])->one();
     if (null === $memberModel) {
         $this->findModel($id)->delete();
     } else {
         Yii::$app->session->setFlash('alert', ['body' => \Yii::t('backend', 'Can not delete category #' . $id . '. It used in other table. Change member for project #' . $projectModel->id . ' before delete.'), 'options' => ['class' => 'alert-error']]);
     }
     return $this->redirect(['index']);
 }
예제 #3
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Member::find();
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pagesize' => 100], 'sort' => ['defaultOrder' => ['id' => SORT_DESC]]]);
     if (!($this->load($params) && $this->validate())) {
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'role' => $this->role, 'status' => $this->status]);
     $query->andFilterWhere(['like', 'username', $this->username])->andFilterWhere(['like', 'auth_key', $this->auth_key])->andFilterWhere(['like', 'password_hash', $this->password_hash])->andFilterWhere(['like', 'password_reset_token', $this->password_reset_token])->andFilterWhere(['like', 'email', $this->email])->andFilterWhere(['like', 'phone', $this->phone])->andFilterWhere(['like', 'city', $this->city])->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'avatar', $this->avatar])->andFilterWhere(['like', 'banner_top', $this->banner_top])->andFilterWhere(['like', 'params', $this->params])->andFilterWhere(['like', 'position', $this->position])->andFilterWhere(['like', 'hobby', $this->hobby])->andFilterWhere(['like', 'updateDate', $this->updateDate])->andFilterWhere(['like', 'createDate', $this->createDate])->andFilterWhere(['like', 'description', $this->description]);
     return $dataProvider;
 }
예제 #4
0
 /**
  * Creates data provider instance with search query applied
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Member::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     if (!($this->load($params) && $this->validate())) {
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'slug' => $this->slug, 'author_id' => $this->author_id, 'category_id' => $this->category_id, 'updater_id' => $this->updater_id, 'status' => $this->status, 'published_at' => $this->published_at, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at]);
     $query->andFilterWhere(['like', 'slug', $this->slug])->andFilterWhere(['like', 'title', $this->title])->andFilterWhere(['like', 'weight', $this->weight])->andFilterWhere(['like', 'body', $this->body]);
     return $dataProvider;
 }
예제 #5
0
 public function actionAdd()
 {
     $model = new FundTransaction();
     if ($model->load(Yii::$app->request->post())) {
         if ($model->validate()) {
             $model->member_id = Member::find()->where(['=', 'username', $model->membername])->one()->id;
             if ($model->save()) {
                 return $this->redirect(['history']);
             }
         }
     }
     return $this->render('add', ['model' => $model]);
 }
예제 #6
0
 /**
  * Site Homepage
  *
  * @return string
  */
 public function actionView()
 {
     $memberId = (int) $this->request->getQueryParam('id');
     if (!$memberId) {
         return $this->goHome();
     }
     $member = Member::find()->where(['id' => $memberId])->limit(1)->one();
     if (!$member) {
         return $this->goHome();
     }
     $snippetCount = Snippet::find()->where(['memberId' => $member->id, 'isHidden' => 0])->count();
     $commentCount = SnippetComment::find()->where(['memberId' => $member->id])->count();
     return $this->render('view', ['member' => $member, 'snippetCount' => $snippetCount, 'commentCount' => $commentCount, 'snippets' => MemberSnippetsList::get($member)]);
 }
예제 #7
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Member::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'role' => $this->role, 'status' => $this->status, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at]);
     $query->andFilterWhere(['like', 'username', $this->username])->andFilterWhere(['like', 'auth_key', $this->auth_key])->andFilterWhere(['like', 'password_hash', $this->password_hash])->andFilterWhere(['like', 'password_reset_token', $this->password_reset_token])->andFilterWhere(['like', 'email', $this->email])->andFilterWhere(['like', 'member_name', $this->member_name]);
     return $dataProvider;
 }
예제 #8
0
 /**
  * Lists all Member models.
  * @return mixed
  */
 public function actionEnum($domain_type)
 {
     $membersArray = Member::find()->published()->andWhere(['like', 'domain', Yii::getAlias('@frontendUrl_' . $domain_type)])->all();
     $enum = [];
     $enumTitles = [];
     foreach ($membersArray as $k => $v) {
         $title = $v->firstname . ' ' . $v->lastname . ' (' . $v->position . ') #' . $v->id;
         $enum[] = $title;
     }
     //\yii\helpers\VarDumper::dump($members,11,1); die();
     Yii::$app->response->data = ["items" => ["type" => "string", "enum" => $enum]];
     Yii::$app->response->format = yii\web\Response::FORMAT_JSON;
     return Yii::$app->response;
 }
예제 #9
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Member::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'status' => $this->status, 'locked' => $this->locked, 'role_id' => $this->role_id, 'investment' => $this->investment, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at, 'approved_at' => $this->approved_at, 'buy_stack' => $this->buy_stack, 'added_by' => $this->added_by, 'stack_fund' => $this->stack_fund, 'finance_fund' => $this->finance_fund]);
     $query->andFilterWhere(['like', 'auth_key', $this->auth_key])->andFilterWhere(['like', 'username', $this->username])->andFilterWhere(['like', 'access_token', $this->access_token])->andFilterWhere(['like', 'nickname', $this->nickname])->andFilterWhere(['like', 'password_hash', $this->password_hash])->andFilterWhere(['like', 'password_hash2', $this->password_hash2])->andFilterWhere(['like', 'identity', $this->identity])->andFilterWhere(['like', 'phone', $this->phone])->andFilterWhere(['like', 'title', $this->title])->andFilterWhere(['like', 'bank', $this->bank])->andFilterWhere(['like', 'cardname', $this->cardname])->andFilterWhere(['like', 'cardnumber', $this->cardnumber])->andFilterWhere(['like', 'bankaddress', $this->bankaddress])->andFilterWhere(['like', 'email', $this->email])->andFilterWhere(['like', 'qq', $this->qq]);
     return $dataProvider;
 }
예제 #10
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Member::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'birthday' => $this->birthday, 'count' => $this->count, 'status' => $this->status, 'createtime' => $this->createtime]);
     $query->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'password', $this->password])->andFilterWhere(['like', 'email', $this->email])->andFilterWhere(['like', 'realname', $this->realname])->andFilterWhere(['like', 'telephone', $this->telephone])->andFilterWhere(['like', 'qq', $this->qq])->andFilterWhere(['like', 'auth_key', $this->auth_key])->andFilterWhere(['like', 'password_reset_token', $this->password_reset_token]);
     return $dataProvider;
 }
예제 #11
0
 public function search($params)
 {
     $query = Member::find();
     $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['defaultOrder' => ['id' => SORT_DESC]], 'pagination' => ['pageSize' => 20]]);
     // load the seach form data and validate
     if (!($this->load($params) && $this->validate())) {
         return $dataProvider;
     }
     $dateBegin = strtotime($this->date);
     $dateEnd = $dateBegin + 86400;
     // adjust the query by adding the filters
     $query->andFilterWhere(['store_id' => $this->store_id])->andFilterWhere(['like', 'username', $this->username])->andFilterWhere(['like', 'real_name', $this->real_name])->andFilterWhere(['gender' => $this->gender])->andFilterWhere(['like', 'email', $this->email])->andFilterWhere(['like', 'mobile', $this->mobile])->andFilterWhere(['status' => $this->status])->andFilterWhere(['>=', 'created_at', $this->date ? $dateBegin : null])->andFilterWhere(['<', 'created_at', $this->date ? $dateEnd : null]);
     return $dataProvider;
 }
예제 #12
0
 /**
  * Creates data provider instance with search query applied
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Member::find();
     if (!\Yii::$app->user->can('administrator')) {
         $query->forDomain();
     }
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     if (!($this->load($params) && $this->validate())) {
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'slug' => $this->slug, 'author_id' => $this->author_id, 'category_id' => $this->category_id, 'updater_id' => $this->updater_id, 'status' => $this->status, 'published_at' => $this->published_at, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at, 'domain_id' => $this->domain_id]);
     $query->andFilterWhere(['like', 'slug', $this->slug])->andFilterWhere(['like', 'title', $this->title])->andFilterWhere(['like', 'weight', $this->weight])->andFilterWhere(['like', 'body', $this->body])->andFilterWhere(['like', 'before_body', $this->before_body])->andFilterWhere(['like', 'after_body', $this->after_body])->andFilterWhere(['like', 'on_scenario', $this->on_scenario]);
     return $dataProvider;
 }
예제 #13
0
 public function actionLogin()
 {
     $username = \Yii::$app->request->post('username');
     $password = \Yii::$app->request->post('password');
     try {
         /** @var Member $member */
         $member = Member::find()->where(['username' => $username])->one();
         if ($member->validatePassword($password)) {
             return ['token' => $member->getAuthKey()];
         }
         throw new Exception();
     } catch (Exception $e) {
         throw new \HttpInvalidParamException('用户名或密码错误');
     }
 }
예제 #14
0
 /**
  * Attempts to login
  *
  * @return bool
  */
 public function authenticate()
 {
     // Try to find member with this email
     $member = Member::find()->where(['email' => $this->email])->andWhere('password != ""')->limit(1)->one();
     /* @var $member Member */
     if ($member) {
         if (password_verify($this->password, $member->password)) {
             setcookie('k', $member->getCookieKey(), strtotime('+1 day'));
             Yii::$app->session->set('memberId', $member->id);
             Yii::$app->session->set('memberKey', $member->getMemberKey());
             return true;
         }
     }
     $this->addError('email', 'Invalid Credentials');
     return false;
 }
예제 #15
0
 /**
  * Lists all Member models.
  * @return mixed
  */
 public function actionIndex()
 {
     if (!$this->is_access('member/index')) {
         Yii::$app->session->setFlash('error', $this->errorInfo);
         return $this->redirect($this->redirectUrl);
     }
     $requert = Yii::$app->request;
     $username = $requert->get('username');
     $query = Member::find();
     if (!empty($username)) {
         $query = $query->andWhere("username like '%{$username}%'");
     }
     $dataProvider = new ActiveDataProvider(['query' => $query, 'Sort' => ['defaultOrder' => ['uid' => SORT_DESC]]]);
     Yii::$app->view->params['meta_title'] = '会员列表';
     return $this->render('index', ['dataProvider' => $dataProvider]);
 }
예제 #16
0
 /**
  * Attempts to find the member and send them an email
  *
  * @return bool
  */
 public function sendEmail()
 {
     $member = Member::find()->where(['email' => ['like', 'email', $this->email]])->limit(1)->one();
     /* @var $member \yii\db\ActiveRecord */
     if ($member) {
         if ($member->isActive) {
             // Create a new Password Reset Key
             $member->passwordResetKey = Util::getRandomString(32);
             $member->save();
             $encrypted = JWT::encode(['i' => $member->id, 'k' => $member->passwordResetKey], Yii::$app->params['secret']);
             // Send email
             return Yii::$app->mailer->compose(['html' => 'password-reset/html', 'text' => 'password-reset/text'], ['encrypted' => $encrypted, 'member' => $member])->setFrom(Yii::$app->params['fromEmail'])->setTo($this->email)->setSubject('Password Reset - ' . Yii::$app->params['siteName'])->send();
         } else {
             $this->addError('email', 'You account is not active.');
         }
     } else {
         $this->addError('email', 'Could not find you!');
     }
     return false;
 }
예제 #17
0
 /**
  * Attempts to find the member and send them an email
  *
  * @return bool
  */
 public function register()
 {
     $member = Member::find()->where(['email' => ['like', 'email', $this->email]])->limit(1)->one();
     if (!$member) {
         // Create a new member
         $member = new Member();
         $member->email = $this->email;
         $member->name = $this->name;
         $member->isActive = 0;
         $member->passwordResetKey = Util::getRandomString(32);
         $member->setRawPassword($this->password);
         $member->save();
         $encrypted = JWT::encode(['i' => $member->id, 'k' => $member->passwordResetKey], Yii::$app->params['secret']);
         // Send email
         return Yii::$app->mailer->compose(['html' => 'register/html', 'text' => 'register/text'], ['encrypted' => $encrypted, 'member' => $member])->setFrom(Yii::$app->params['fromEmail'])->setTo($this->email)->setSubject('Registration Confirmation - ' . Yii::$app->params['siteName'])->send();
     } else {
         $this->addError('email', 'An account already exists for ' . $this->email);
     }
     return false;
 }
예제 #18
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Member::find()->orderBy(['created_at' => SORT_DESC]);
     if (!Yii::$app->user->identity->isAdmin()) {
         $this->added_by = Yii::$app->user->identity->id;
     }
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'status' => $this->status, 'locked' => $this->locked, 'role_id' => $this->role_id, 'investment' => $this->investment, 'buy_stack' => $this->buy_stack, 'added_by' => $this->added_by, 'stack_fund' => $this->stack_fund, 'finance_fund' => $this->finance_fund]);
     if ($this->approved_at) {
         $date = explode(' - ', $this->approved_at);
         if (count($date) == 2) {
             $query->andFilterWhere(['>=', $this::tableName() . '.approved_at', $date[0] . ' 00:00:00']);
             $query->andFilterWhere(['<=', $this::tableName() . '.approved_at', $date[1] . ' 23:59:59']);
         }
     }
     if ($this->created_at) {
         $date = explode(' - ', $this->created_at);
         if (count($date) == 2) {
             $query->andFilterWhere(['>=', $this::tableName() . '.created_at', $date[0] . ' 00:00:00']);
             $query->andFilterWhere(['<=', $this::tableName() . '.created_at', $date[1] . ' 23:59:59']);
         }
     }
     if ($this->updated_at) {
         $date = explode(' - ', $this->updated_at);
         if (count($date) == 2) {
             $query->andFilterWhere(['>=', $this::tableName() . '.updated_at', $date[0] . ' 00:00:00']);
             $query->andFilterWhere(['<=', $this::tableName() . '.updated_at', $date[1] . ' 23:59:59']);
         }
     }
     $query->andFilterWhere(['like', 'auth_key', $this->auth_key])->andFilterWhere(['like', 'username', $this->username])->andFilterWhere(['like', 'access_token', $this->access_token])->andFilterWhere(['like', 'nickname', $this->nickname])->andFilterWhere(['like', 'password_hash', $this->password_hash])->andFilterWhere(['like', 'password_hash2', $this->password_hash2])->andFilterWhere(['like', 'identity', $this->identity])->andFilterWhere(['like', 'phone', $this->phone])->andFilterWhere(['like', 'title', $this->title])->andFilterWhere(['like', 'bank', $this->bank])->andFilterWhere(['like', 'cardname', $this->cardname])->andFilterWhere(['like', 'cardnumber', $this->cardnumber])->andFilterWhere(['like', 'bankaddress', $this->bankaddress])->andFilterWhere(['like', 'email', $this->email])->andFilterWhere(['like', 'qq', $this->qq])->orderBy(['created_at' => SORT_DESC]);
     return $dataProvider;
 }
예제 #19
0
 /**
  * /register/complete
  *
  * @return string|\yii\web\Response
  */
 public function actionComplete()
 {
     if ($this->member) {
         return $this->goHome();
     }
     $errors = null;
     $encrypted = $this->request->getQueryParam('k');
     if ($encrypted) {
         try {
             $data = JWT::decode($encrypted, $this->params['secret'], ['HS256']);
             // Get member
             $member = Member::find()->where(['id' => $data->i])->limit(1)->one();
             if ($member) {
                 if (!$member->isActive) {
                     if ($member->passwordResetKey && $member->passwordResetKey == $data->k) {
                         $member->passwordResetKey = '';
                         $member->isActive = 1;
                         $member->save();
                         $this->notifySuccess('Your registration is complete. Please log in.');
                         return $this->redirect('/login');
                     } else {
                         $this->notifyError('That registration link is terrible!');
                     }
                 } else {
                     $this->notifySuccess('Your registration is already complete. Please log in.');
                 }
             } else {
                 $this->notifyError('Invalid Account');
             }
         } catch (SignatureInvalidException $e) {
             $this->notifyError('Invalid registration key');
         }
     } else {
         $this->notifyError('Invalid registration key');
     }
     return $this->redirect('/login');
 }
예제 #20
0
 public static function isExist($usename)
 {
     $existUser = Member::find()->where(['=', 'username', $usename]);
     return $existUser ? $existUser->one() : null;
 }
예제 #21
0
 public function setMemberId()
 {
     if (Yii::$app->user->identity->isAdmin()) {
         $existUser = Member::find()->where(['=', 'username', $this->membername])->one();
         $this->member_id = $existUser ? $existUser->id : 0;
     } else {
         $this->member_id = Yii::$app->user->identity->id;
     }
 }
 /**
  * Lists all Member models.
  * @return mixed
  */
 public function actionIndex()
 {
     $dataProvider = new ActiveDataProvider(['query' => Member::find()]);
     return $this->render('index', ['dataProvider' => $dataProvider]);
 }
예제 #23
0
 /**
  * /login/reset
  *
  * @return string|\yii\web\Response
  */
 public function actionReset()
 {
     if ($this->member) {
         return $this->goHome();
     }
     $errors = null;
     $encrypted = $this->request->getQueryParam('k');
     if ($encrypted) {
         try {
             $data = JWT::decode($encrypted, $this->params['secret'], ['HS256']);
             // Get member
             $member = Member::find()->where(['id' => $data->i])->limit(1)->one();
             if ($member) {
                 if ($member->isActive) {
                     if ($member->passwordResetKey && $member->passwordResetKey == $data->k) {
                         $model = new ResetForm();
                         if ($this->request->method == 'POST') {
                             // populate model attributes with user inputs
                             $model->load($this->request->post());
                             if ($model->validate() && $model->save($member)) {
                                 $this->notifySuccess('Your new password has been saved. Please log in.');
                                 return $this->redirect('/login');
                             } else {
                                 // validation failed: $errors is an array containing error messages
                                 $errors = $model->errors;
                             }
                         }
                         return $this->render('reset', ['model' => $model, 'errors' => $errors]);
                     } else {
                         $this->notifyError('That password reset link has expired');
                     }
                 } else {
                     $this->notifyError('Account is not active');
                 }
             } else {
                 $this->notifyError('Invalid Account');
             }
         } catch (SignatureInvalidException $e) {
             $this->notifyError('Invalid password reset key');
         }
     } else {
         $this->notifyError('Invalid password reset key');
     }
     return $this->redirect('/login');
 }