コード例 #1
0
 /**
  * Run action: update exists accounts or add new account
  */
 public function run()
 {
     $model = $this->model;
     $successMessage = '';
     $errorMessage = '';
     $query = $model->getAccounts();
     $query->modelClass = UserAccountForm::className();
     $accounts = $query->indexBy('id')->all();
     // new model
     $newAccount = new UserAccountForm();
     if (Yii::$app->request->post('add-new') && $newAccount->load(Yii::$app->request->post()) && $newAccount->validate()) {
         // add new username
         $result = $this->userModule->updateVcsBindings($model, [$newAccount]);
         if ($result) {
             $successMessage = Yii::t('user', 'New binding was successfully added');
         } else {
             $errorMessage = Yii::t('user', 'Error add a new binding');
         }
     } elseif (Yii::$app->request->post('update') && UserAccountForm::loadMultiple($accounts, Yii::$app->request->post()) && UserAccountForm::validateMultiple($accounts)) {
         $result = $this->userModule->updateVcsBindings($model, $accounts);
         if ($result) {
             $successMessage = Yii::t('user', 'Bindings was successfully updated');
         } else {
             $errorMessage = Yii::t('user', 'Update bindings error');
         }
     }
     if (!empty($_POST)) {
         // reset accounts list
         $accounts = $query->indexBy('id')->all();
     }
     return $this->controller->render('vcs-bindings', ['model' => $model, 'accounts' => $accounts, 'newAccount' => $newAccount, 'successMessage' => $successMessage, 'errorMessage' => $errorMessage]);
 }
コード例 #2
0
 /**
  * Change password wrapper
  *
  * @param ChangePasswordForm $model
  * @return mixed
  */
 protected function changePassword(ChangePasswordForm $model)
 {
     /* @var $systemAlert Alert */
     $systemAlert = Yii::$app->systemAlert;
     if ($this->userModule->changeUserPassword($model, Yii::$app->user->identity)) {
         $systemAlert->setMessage(Alert::INFO, Yii::t('user', 'Password successfully changed'));
     } else {
         $systemAlert->setMessage(Alert::DANGER, Yii::t('user', 'Change password error'));
     }
     return $this->refresh();
 }
コード例 #3
0
 /**
  * Users locking
  *
  * @param integer $id
  * @return mixed
  * @throws NotFoundHttpException
  */
 public function actionLock($id)
 {
     $model = $this->findModel($id);
     /* @var $systemAlert Alert */
     $systemAlert = Yii::$app->systemAlert;
     try {
         if ($this->userModule->lockUser($model)) {
             $systemAlert->setMessage(Alert::SUCCESS, Yii::t('user', 'User successfully blocked'));
         } else {
             $systemAlert->setMessage(Alert::SUCCESS, Yii::t('user', 'Error locking a user'));
         }
     } catch (Exception $ex) {
         $systemAlert->setMessage(Alert::DANGER, Yii::t('app', 'System error: {message}', ['message' => $ex->getMessage()]));
     }
     return $this->redirect(['index']);
 }
コード例 #4
0
ファイル: UserManagerTest.php プロジェクト: kalyabin/comitka
 /**
  * Tests VCS bindings update
  *
  * @return User
  *
  * @depends testLockAndActivate
  */
 public function testVCSBindings()
 {
     /* @var $user User */
     $user = $this->getModule('Yii2')->grabFixture('users', 'activeUser1');
     $accounts = [0 => new UserAccountForm(['username' => 'testing user name git', 'type' => UserAccount::TYPE_GIT]), 1 => new UserAccountForm(['username' => 'testing user name hg', 'type' => UserAccount::TYPE_HG])];
     $this->assertTrue($this->userModule->updateVcsBindings($user, $accounts));
     $this->assertEquals(count($accounts), count($user->accounts));
     unset($user->accounts);
     $accounts[0]->deletionFlag = true;
     $this->assertTrue($this->userModule->updateVcsBindings($user, $accounts));
     $this->assertEquals(1, count($user->accounts));
     /* @var $contributorApi ContributorApi */
     $contributorApi = Yii::$app->contributors;
     $getByName = $contributorApi->getContributor(UserAccount::TYPE_HG, 'testing user name hg');
     $this->assertInstanceOf(User::className(), $getByName);
     $this->assertEquals($getByName->id, $user->id);
     return $user;
 }
コード例 #5
0
ファイル: AuthController.php プロジェクト: kalyabin/comitka
 /**
  * Sign in
  *
  * @return mixed
  */
 public function actionSignIn()
 {
     $model = new SignInForm();
     $ret = $this->performAjaxValidation($model);
     if (is_array($ret)) {
         // AJAX validation
         return $ret;
     }
     if ($model->load(Yii::$app->request->post()) && $model->validate()) {
         $user = $model->getUser();
         if ($user instanceof User && $this->userModule->signInUser($user, $model->password)) {
             return $this->goHome();
         }
         // account was blocked
         /* @var $systemAlert Alert */
         $systemAlert = Yii::$app->systemAlert;
         $systemAlert->setMessage(Alert::DANGER, Yii::t('user', 'An account is blocked'));
         return $this->refresh();
     }
     return $this->render('sign-in', ['model' => $model]);
 }