/** * Регистрирует пользователей * * @param $email * @param $password * * @return static */ public static function registration($email, $password) { $email = strtolower($email); $fields = ['email' => $email, 'password' => self::hashPassword($password), 'is_active' => 0, 'is_confirm' => 0, 'datetime_reg' => gmdate('YmdHis'), 'referal_code' => Security::generateRandomString(20)]; \Yii::info('REQUEST: ' . \yii\helpers\VarDumper::dumpAsString($_REQUEST), 'gs\\user_registration'); \Yii::info('Поля для регистрации: ' . \yii\helpers\VarDumper::dumpAsString($fields), 'gs\\user_registration'); $user = self::insert($fields); $fields = RegistrationDispatcher::add($user->getId()); \cs\Application::mail($email, 'Подтверждение регистрации', 'registration', ['url' => Url::to(['auth/registration_activate', 'code' => $fields['code']], true), 'user' => $user, 'datetime' => \Yii::$app->formatter->asDatetime($fields['date_finish'])]); return $user; }
/** * Очищает старые заявки на регистрацию */ public function actionClear_registration() { \app\service\RegistrationDispatcher::cron(); }
/** * Активация регистрации * * @param string $code * * @return Response * @throws Exception */ public function actionRegistration_activate($code) { $row = RegistrationDispatcher::query(['code' => $code])->one(); if ($row === false) { throw new Exception('Срок ссылки истек или не верный код активации'); } $user = User::find($row['parent_id']); if (is_null($user)) { throw new Exception('Пользователь не найден'); } $user->activate(); Yii::$app->user->login($user); RegistrationDispatcher::delete($row['parent_id']); return $this->goHome(); }