public function actionIndex($u = null, $invite = null) { $user = new User("register"); $user->lang = 1; if (p()["registerType"] == "INVITE") { /** Магия с инвайтами */ $invite = RegInvite::model()->findByAttributes(["from_id" => (int) $u, "code" => $invite]); if (!$invite) { Yii::app()->user->setFlash("error", "Ваше приглашение не обнаружено. Тому может быть несколько причин: приглашение могло устареть, оно могло быть отозвано отправителем или ваша почтовая система исказила ссылку на регистрацию, по которой вы перешли."); $this->redirect("/"); } if ($invite->to_id) { // Инвайт адресный, просто активируем аккаунт и редиректим на главную $invite->buddy->invited_by = $invite->from_id; $invite->buddy->can_set(User::CAN_LOGIN, 1); $invite->buddy->save(false, ["invited_by", "can"]); // Удаляем инвайт, потому что его использовали $invite->delete(); // И пиздуем на главную с флагом "fresh meat" Yii::app()->user->setFlash("success", "Рады видеть вас в наших жидких рядах, {$invite->buddy->login}! На вас вся надежда. Вводите ваш старый пароль."); Yii::app()->user->setState("loginAs", $invite->buddy->login); $this->redirect("/"); } $user->email = $invite->to_email; $user->invited_by = $invite->from_id; } $this->performAjaxValidation($user); if (isset($_POST["User"])) { $user->attributes = $_POST["User"]; if ($user->save()) { // отправить письмо $message = new YiiMailMessage("Добро пожаловать на " . Yii::app()->name); $message->view = "welcome"; $message->from = Yii::app()->params['adminEmail']; $message->addTo($user->email); $message->setBody(array("user" => $user), "text/html"); Yii::app()->mail->send($message); // залогинить $identity = new UserIdentity($user->login, $_POST["User"]["pass"]); $identity->authenticate(); $duration = 3600 * 24 * 30; Yii::app()->user->login($identity, $duration); if (p()["registerType"] == "INVITE") { $invite->delete(); } $this->redirect("/register/done"); } } $this->render("index", array("model" => $user)); }
public function actionAdmin($id) { if (!Yii::app()->user->can("admin")) { throw new CHttpException(404); } $user = $this->loadUser($id); $user->scenario = "edit-admin"; if (Yii::app()->request->isPostRequest) { $user->setAttributes($_POST["User"]); if (is_array($_POST["can"])) { foreach ($_POST["can"] as $bit) { $user->can_set($bit, 1); } } if ($user->save()) { Yii::app()->user->setFlash("success", "Сохранено."); } } $remindToken = RemindToken::model()->findByAttributes(["user_id" => $user->id]); $sentInvites = RegInvite::model()->with("sender")->findAllByAttributes(["to_id" => $user->id]); $this->side_view = ["profile_side" => ["user" => $user, "userinfo" => $user->userinfo]]; $this->render("admin", ["user" => $user, "remindToken" => $remindToken, "sentInvites" => $sentInvites]); }