/** * 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]); }
/** * 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(); }
/** * 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']); }
/** * 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; }
/** * 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]); }