X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fapiaccountregister.php;h=4a785998292b0c13c260f61620ab65ddedc43d04;hb=4d17d9533552ea620b83109c550e250a5c236291;hp=9ce7bcfb685e236229854f9372172fca42784698;hpb=f46d675a20bd1c70eeb492d7068fabae83e6a6f5;p=quix0rs-gnu-social.git diff --git a/actions/apiaccountregister.php b/actions/apiaccountregister.php index 9ce7bcfb68..4a78599829 100644 --- a/actions/apiaccountregister.php +++ b/actions/apiaccountregister.php @@ -1,5 +1,4 @@ code)) { - $this->invite = Invitation::staticGet('code', $this->code); + $this->invite = Invitation::getKV('code', $this->code); if (empty($this->invite)) { // TRANS: Client error displayed when trying to register to an invite-only site without a valid invitation. $this->clientError(_('Sorry, invalid invitation code.'), 401); @@ -114,22 +113,17 @@ class ApiAccountRegisterAction extends ApiAction // Input scrubbing try { - $nickname = Nickname::normalize($nickname); + $nickname = Nickname::normalize($nickname, true); } catch (NicknameException $e) { // clientError handles Api exceptions with various formats and stuff - $this->clientError(_('Not a valid nickname.'), 400); + $this->clientError($e->getMessage(), $e->getCode()); } + $email = common_canonical_email($email); if ($email && !Validate::email($email, common_config('email', 'check_domain'))) { // TRANS: Form validation error displayed when trying to register without a valid e-mail address. $this->clientError(_('Not a valid email address.'), 400); - } else if ($this->nicknameExists($nickname)) { - // TRANS: Form validation error displayed when trying to register with an existing nickname. - $this->clientError(_('Nickname already in use. Try another one.'), 400); - } else if (!User::allowed_nickname($nickname)) { - // TRANS: Form validation error displayed when trying to register with an invalid nickname. - $this->clientError(_('Not a valid nickname.'), 400); } else if ($this->emailExists($email)) { // TRANS: Form validation error displayed when trying to register with an already registered e-mail address. $this->clientError(_('Email address already exists.'), 400); @@ -137,9 +131,6 @@ class ApiAccountRegisterAction extends ApiAction !common_valid_http_url($homepage)) { // TRANS: Form validation error displayed when trying to register with an invalid homepage URL. $this->clientError(_('Homepage is not a valid URL.'), 400); - } else if (!is_null($fullname) && mb_strlen($fullname) > 255) { - // TRANS: Form validation error displayed when trying to register with a too long full name. - $this->clientError(_('Full name is too long (maximum 255 characters).'), 400); } else if (Profile::bioTooLong($bio)) { // TRANS: Form validation error on registration page when providing too long a bio text. // TRANS: %d is the maximum number of characters for bio; used for plural. @@ -147,9 +138,6 @@ class ApiAccountRegisterAction extends ApiAction 'Bio is too long (maximum %d characters).', Profile::maxBio()), Profile::maxBio()), 400); - } else if (!is_null($location) && mb_strlen($location) > 255) { - // TRANS: Form validation error displayed when trying to register with a too long location. - $this->clientError(_('Location is too long (maximum 255 characters).'), 400); } else if (strlen($password) < 6) { // TRANS: Form validation error displayed when trying to register with too short a password. $this->clientError(_('Password must be 6 or more characters.'), 400); @@ -157,50 +145,31 @@ class ApiAccountRegisterAction extends ApiAction // TRANS: Form validation error displayed when trying to register with non-matching passwords. $this->clientError(_('Passwords do not match.'), 400); } else { - - // annoy spammers - sleep(7); - - if ($user = User::register(array('nickname' => $nickname, - 'password' => $password, - 'email' => $email, - 'fullname' => $fullname, - 'homepage' => $homepage, - 'bio' => $bio, - 'location' => $location, - 'code' => $code))) { - if (!$user) { - // TRANS: Form validation error displayed when trying to register with an invalid username or password. - $this->clientError(_('Invalid username or password.'), 400); - } - - Event::handle('EndRegistrationTry', array($this)); - - $this->initDocument('json'); - $this->showJsonObjects($this->twitterUserArray($user->getProfile())); - $this->endDocument('json'); - - } else { - // TRANS: Form validation error displayed when trying to register with an invalid username or password. - $this->clientError(_('Invalid username or password.'), 400); - } - } - } - - /** - * Does the given nickname already exist? - * - * Checks a canonical nickname against the database. - * - * @param string $nickname nickname to check - * - * @return boolean true if the nickname already exists - */ - function nicknameExists($nickname) - { - $user = User::staticGet('nickname', $nickname); - return is_object($user); + // annoy spammers + sleep(7); + + if (Event::handle('APIStartRegistrationTry', array($this))) { + try { + $user = User::register(array('nickname' => $nickname, + 'password' => $password, + 'email' => $email, + 'fullname' => $fullname, + 'homepage' => $homepage, + 'bio' => $bio, + 'location' => $location, + 'code' => $this->code)); + Event::handle('EndRegistrationTry', array($this)); + + $this->initDocument('json'); + $this->showJsonObjects($this->twitterUserArray($user->getProfile())); + $this->endDocument('json'); + + } catch (Exception $e) { + $this->clientError($e->getMessage(), 400); + } + } + } } /** @@ -218,7 +187,7 @@ class ApiAccountRegisterAction extends ApiAction if (!$email || strlen($email) == 0) { return false; } - $user = User::staticGet('email', $email); + $user = User::getKV('email', $email); return is_object($user); }