/** * 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(); $user->status = User::STATUS_NOTACTIVATED; $b = $user->save(); $activationToken = new UserTokens(); $activationToken->user_id = $user->id; $activationToken->token_type = ETokenType::ACCOUNT_ACTIVATION; $activationToken->token = sha1(mt_rand(10000, 99999) . time() . $user->email); $activationToken->save(); $auth = Yii::$app->authManager; $userRole = $auth->getRole('user'); $auth->assign($userRole, $user->id); if ($b) { $x = new UserInfo(); $x->user_id = $user->id; $x->save(); EventService::createEvent(EEvent::ACCOUNT_CREATE(), new UserId($user->id)); $this->sendActivationMail($user, $activationToken->token); return $user; } } return null; }
/** * @param UserId $uid * @param ETokenType $tokenType * @param bool $expireable * @param \DateTime|null $expirationDate */ public static function createToken(UserId $uid, ETokenType $tokenType, $expireable = false, $expirationDate = null) { $token = new UserTokens(); $token->user_id = $uid->getId(); $token->token_type = $tokenType->getValue(); $token->token_expirable = $expireable; if (!is_null($expirationDate)) { $token->token_expiration_date = $expirationDate->format('Y-m-d H:i:s'); } return $token->save(); }