Пример #1
0
 /**
  * Signs user up.
  *
  * @return User|null the saved model or null if saving fails
  */
 public function signup()
 {
     if ($this->validate()) {
         $user = new User();
         $user->username = $this->username;
         $user->email = $this->email;
         $user->setPassword($this->password);
         $user->generateAuthKey();
         // Если необходима активация email адресов
         if (Yii::$app->params['emailActivation'] == true) {
             $user->status = $user::STATUS_NOT_ACTIVE;
         }
         $transaction = Yii::$app->db->beginTransaction();
         if ($r = $user->save()) {
             $profile = new UserProfile();
             $profile->user_id = $user->id;
             if ($profile->save()) {
                 $transaction->commit();
                 // Генерируем токен для подтверждения email
                 $user->generateEmailConfirmToken();
                 // Сохраняем его в базе
                 $user->save();
                 // Отправляем письмо
                 $user->sendEmailConfirm();
                 return $user;
             } else {
                 $transaction->rollBack();
             }
         } else {
             $transaction->rollBack();
         }
     }
     return null;
 }