/** * 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; }