skeeks\cms\models\forms\SignupForm::signup PHP Méthode

signup() public méthode

Signs user up.
public signup ( ) : User | null
Résultat skeeks\cms\models\User | null the saved model or null if saving fails
    public function signup()
    {
        if ($this->validate()) {
            /**
             * @var User $user
             */
            $userClassName = \Yii::$app->user->identityClass;
            $user = new $userClassName();
            if ($this->scenario == self::SCENARION_FULLINFO) {
                $user->username = $this->username;
                $user->email = $this->email;
                $user->setPassword($this->password);
                $user->generateAuthKey();
                $user->save();
                return $user;
            } else {
                if ($this->scenario == self::SCENARION_ONLYEMAIL) {
                    $password = \Yii::$app->security->generateRandomString(6);
                    $user->generateUsername();
                    $user->setPassword($password);
                    $user->email = $this->email;
                    $user->generateAuthKey();
                    if ($user->save()) {
                        \Yii::$app->mailer->view->theme->pathMap = ArrayHelper::merge(\Yii::$app->mailer->view->theme->pathMap, ['@app/mail' => ['@skeeks/cms/mail-templates']]);
                        \Yii::$app->mailer->compose('@app/mail/register-by-email', ['user' => $user, 'password' => $password])->setFrom([\Yii::$app->cms->adminEmail => \Yii::$app->cms->appName . ''])->setTo($user->email)->setSubject(\Yii::t('skeeks/cms', 'Sign up at site') . \Yii::$app->cms->appName)->send();
                        return $user;
                    } else {
                        \Yii::error("User rgister by email error: {$user->username} " . Json::encode($user->getFirstErrors()), 'RegisterError');
                        return null;
                    }
                }
            }
        }
        return null;
    }

Usage Example

Exemple #1
0
 /**
  * Процесс отправки формы
  * @return array
  */
 public function actionShopPersonTypeSubmit()
 {
     $rr = new RequestResponse();
     try {
         if (\Yii::$app->request->isAjax && !\Yii::$app->request->isPjax) {
             if (\Yii::$app->request->post('shop_person_type_id')) {
                 $shop_person_type_id = \Yii::$app->request->post('shop_person_type_id');
                 $shop_buyer_id = \Yii::$app->request->post('shop_buyer_id');
                 /**
                  * @var $shopPersonType ShopPersonType
                  */
                 $modelBuyer = ShopBuyer::findOne($shop_buyer_id);
                 $shopPersonType = ShopPersonType::find()->active()->andWhere(['id' => $shop_person_type_id])->one();
                 if (!$shopPersonType) {
                     throw new Exception(\skeeks\cms\shop\Module::t('app', 'This payer is disabled or deleted. Refresh the page.'));
                 }
                 if (!$modelBuyer) {
                     $modelBuyer = $shopPersonType->createModelShopBuyer();
                 }
                 $validateModel = $modelBuyer->relatedPropertiesModel;
                 if ($validateModel->load(\Yii::$app->request->post()) && $validateModel->validate()) {
                     $modelBuyerName = [];
                     //Проверка свойств
                     foreach ($validateModel->attributeValues() as $code => $value) {
                         /**
                          * @var $property ShopPersonTypeProperty
                          */
                         $property = $validateModel->getRelatedProperty($code);
                         if ($property->is_buyer_name == Cms::BOOL_Y) {
                             $modelBuyerName[] = $value;
                         }
                         if ($property->is_user_email == Cms::BOOL_Y) {
                             $userEmail = $value;
                         }
                         if ($property->is_user_name == Cms::BOOL_Y) {
                             $userName = $value;
                         }
                         if ($property->is_user_username == Cms::BOOL_Y) {
                             $userUsername = $value;
                         }
                         if ($property->is_user_phone == Cms::BOOL_Y) {
                             $userPhone = $value;
                         }
                     }
                     //Нужно создать польозвателя
                     if (\Yii::$app->user->isGuest) {
                         if (!$userEmail) {
                             throw new Exception(\skeeks\cms\shop\Module::t('app', 'Unknown email address user'));
                         }
                         $newUser = new SignupForm();
                         $newUser->scenario = SignupForm::SCENARION_ONLYEMAIL;
                         $newUser->email = $userEmail;
                         if (!($user = $newUser->signup())) {
                             throw new Exception(\skeeks\cms\shop\Module::t('app', 'Do not create a user profile.'));
                         }
                         //Авторизация пользователя
                         \Yii::$app->user->login($user, 0);
                     }
                     $modelBuyer->name = $modelBuyerName ? implode(", ", $modelBuyerName) : $shopPersonType->name . " от (" . \Yii::$app->formatter->asDate(time(), 'medium') . ")";
                     $modelBuyer->cms_user_id = \Yii::$app->user->identity->id;
                     $modelBuyer->shop_person_type_id = $shopPersonType->id;
                     if (!$modelBuyer->save()) {
                         throw new Exception(\skeeks\cms\shop\Module::t('app', 'The data for the buyer are not saved.'));
                     }
                     $validateModel->save();
                     \Yii::$app->shop->shopFuser->buyer_id = $modelBuyer->id;
                     \Yii::$app->shop->shopFuser->person_type_id = $modelBuyer->shopPersonType->id;
                     \Yii::$app->shop->shopFuser->save();
                     $rr->success = true;
                     $rr->message = \skeeks\cms\shop\Module::t('app', 'Successfully sent');
                 } else {
                     throw new Exception(\skeeks\cms\shop\Module::t('app', 'Check the correctness of filling the form fields'));
                 }
             }
         }
     } catch (\Exception $e) {
         $rr->success = false;
         $rr->message = $e->getMessage();
     }
     return (array) $rr;
 }
All Usage Examples Of skeeks\cms\models\forms\SignupForm::signup