/** * Экшен создания учетной записи администратора: * * @return nothing **/ public function actionCreateuser() { $model = new InstallForm('createUser'); if (isset($this->session['InstallForm']['createUser'])) { $model->setAttributes($this->session['InstallForm']['createUser']); if ($model->validate() && $this->session['InstallForm']['createUserStep'] === true) { $this->session['InstallForm'] = array_merge($this->session['InstallForm'], ['createUser' => $model->attributes, 'createUserStep' => false]); $this->_markFinished('createuser'); $this->_setSession(); $this->redirect(['/install/default/sitesettings']); } } if (($data = Yii::app()->getRequest()->getPost('InstallForm')) !== null) { // Сбрасываем сессию текущего пользователя, может поменяться id Yii::app()->getUser()->clearStates(); $model->setAttributes($data); if ($model->validate()) { $user = new User(); $user->deleteAll(); $user->setAttributes(['nick_name' => $model->userName, 'email' => $model->userEmail, 'gender' => User::GENDER_THING, 'access_level' => User::ACCESS_LEVEL_ADMIN, 'status' => User::STATUS_ACTIVE, 'email_confirm' => User::EMAIL_CONFIRM_YES, 'hash' => Yii::app()->userManager->hasher->hashPassword($model->userPassword), 'birth_date' => null]); if ($user->save()) { //@TODO заменить на обработку через событие if (Yii::app()->hasModule('rbac')) { Yii::import('application.modules.rbac.models.*'); $assign = new AuthAssignment(); $assign->itemname = AuthItem::ROLE_ADMIN; $assign->userid = $user->id; $assign->save(); } $login = new LoginForm(); $login->email = $model->userEmail; $login->password = $model->userPassword; Yii::app()->authenticationManager->login($login, Yii::app()->user, Yii::app()->request); Yii::app()->getUser()->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('InstallModule.install', 'The administrator has successfully created!')); $this->session['InstallForm'] = array_merge($this->session['InstallForm'], ['createUser' => $model->attributes, 'createUserStep' => true]); $this->_setSession(); $this->redirect(['/install/default/createuser']); } else { $model->addErrors($user->getErrors()); } } } $this->render('_view', ['data' => ['model' => $model]]); }
/** * Экшен создания учетной записи администратора: * * @return nothing **/ public function actionCreateuser() { $model = new InstallForm('createUser'); if (isset($this->session['InstallForm']['createUser'])) { $model->setAttributes($this->session['InstallForm']['createUser']); if ($model->validate() && $this->session['InstallForm']['createUserStep'] === true) { $this->session['InstallForm'] = array_merge($this->session['InstallForm'], array('createUser' => $model->attributes, 'createUserStep' => false)); $this->_markFinished('createuser'); $this->_setSession(); $this->redirect(array('/install/default/sitesettings')); } } if (($data = Yii::app()->getRequest()->getPost('InstallForm')) !== null) { // Сбрасываем сессию текущего пользователя, может поменяться id Yii::app()->user->clearStates(); $model->setAttributes($data); if ($model->validate()) { $user = new User(); $user->deleteAll(); $user->setAttributes(array('nick_name' => $model->userName, 'email' => $model->userEmail, 'gender' => 0, 'access_level' => User::ACCESS_LEVEL_ADMIN, 'status' => User::STATUS_ACTIVE, 'email_confirm' => User::EMAIL_CONFIRM_YES, 'hash' => Yii::app()->userManager->hasher->hashPassword($model->userPassword), 'birth_date' => null)); if ($user->save()) { $login = new LoginForm(); $login->email = $model->userEmail; $login->password = $model->userPassword; Yii::app()->authenticationManager->login($login, Yii::app()->user, Yii::app()->request); Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('InstallModule.install', 'The administrator has successfully created!')); $this->session['InstallForm'] = array_merge($this->session['InstallForm'], array('createUser' => $model->attributes, 'createUserStep' => true)); $this->_setSession(); $this->redirect(array('/install/default/createuser')); } else { $model->addErrors($user->getErrors()); } } } $this->render('_view', array('data' => array('model' => $model))); }