var $username = null;
var $message = null;
- function handle($args)
+ function handle(array $args=array())
{
parent::handle($args);
if (common_is_real_login()) {
$user = oid_get_user($canonical);
- if ($user) {
+ if ($user instanceof User) {
oid_set_last($display);
// XXX: commented out at @edd's request until better
// control over how data flows from OpenID provider.
// oid_update_user($user, $sreg);
common_set_user($user);
common_real_login(true);
+
if (isset($_SESSION['openid_rememberme']) && $_SESSION['openid_rememberme']) {
common_rememberme($user);
}
+
unset($_SESSION['openid_rememberme']);
$this->goHome($user->nickname);
} else {
if (common_config('site', 'closed')) {
// TRANS: OpenID plugin message. No new user registration is allowed on the site.
$this->clientError(_m('Registration not allowed.'));
- return;
}
$invite = null;
if (empty($code)) {
// TRANS: OpenID plugin message. No new user registration is allowed on the site without an invitation code, and none was provided.
$this->clientError(_m('Registration not allowed.'));
- return;
}
$invite = Invitation::getKV($code);
if (empty($invite)) {
// TRANS: OpenID plugin message. No new user registration is allowed on the site without an invitation code, and the one provided was not valid.
$this->clientError(_m('Not a valid invitation code.'));
- return;
}
}
try {
- $nickname = Nickname::normalize($this->trimmed('newname'));
+ $nickname = Nickname::normalize($this->trimmed('newname'), true);
} catch (NicknameException $e) {
$this->showForm($e->getMessage());
return;
}
- if (!User::allowed_nickname($nickname)) {
- // TRANS: OpenID plugin message. The entered new user name is blacklisted.
- $this->showForm(_m('Nickname not allowed.'));
- return;
- }
-
- if (User::getKV('nickname', $nickname)) {
- // TRANS: OpenID plugin message. The entered new user name is already used.
- $this->showForm(_m('Nickname already in use. Try another one.'));
- return;
- }
-
list($display, $canonical, $sreg) = $this->getSavedValues();
if (!$display || !$canonical) {
// TRANS: OpenID plugin server error. A stored OpenID cannot be retrieved.
$this->serverError(_m('Stored OpenID not found.'));
- return;
}
// Possible race condition... let's be paranoid
if ($other) {
// TRANS: OpenID plugin server error.
$this->serverError(_m('Creating new account for OpenID that already has a user.'));
- return;
}
Event::handle('StartOpenIDCreateNewUser', array($canonical, &$sreg));
Event::handle('EndRegistrationTry', array($this));
- common_redirect(common_local_url('showstream', array('nickname' => $user->nickname)),
- 303);
+ common_redirect(common_local_url('showstream', array('nickname' => $user->nickname)), 303);
}
function connectUser()
if (!$display || !$canonical) {
// TRANS: OpenID plugin server error. A stored OpenID cannot be found.
$this->serverError(_m('Stored OpenID not found.'));
- return;
}
$result = oid_link_user($user->id, $canonical, $display);
if (!$result) {
// TRANS: OpenID plugin server error. The user or user profile could not be saved.
$this->serverError(_m('Error connecting user to OpenID.'));
- return;
}
if (Event::handle('StartOpenIDUpdateUser', array($user, $canonical, &$sreg))) {
// Try the passed-in nickname
if (!empty($sreg['nickname'])) {
- $nickname = $this->nicknamize($sreg['nickname']);
- if ($this->isNewNickname($nickname)) {
+ $nickname = common_nicknamize($sreg['nickname']);
+ if (Nickname::isValid($nickname, true)) {
return $nickname;
}
}
// Try the full name
if (!empty($sreg['fullname'])) {
- $fullname = $this->nicknamize($sreg['fullname']);
- if ($this->isNewNickname($fullname)) {
+ $fullname = common_nicknamize($sreg['fullname']);
+ if (Nickname::isValid($fullname, true)) {
return $fullname;
}
}
$from_url = $this->openidToNickname($display);
- if ($from_url && $this->isNewNickname($from_url)) {
+ if ($from_url && Nickname::isValid($from_url, true)) {
return $from_url;
}
return null;
}
- function isNewNickname($str)
- {
- if (!Nickname::isValid($str)) {
- return false;
- }
- if (!User::allowed_nickname($str)) {
- return false;
- }
- if (User::getKV('nickname', $str)) {
- return false;
- }
- return true;
- }
-
function openidToNickname($openid)
{
if (Auth_Yadis_identifierScheme($openid) == 'XRI') {
// =evan.prodromou
// or @gratis*evan.prodromou
$parts = explode('*', substr($base, 1));
- return $this->nicknamize(array_pop($parts));
+ return common_nicknamize(array_pop($parts));
}
}
return $xri;
}
}
-
- // Given a string, try to make it work as a nickname
- function nicknamize($str)
- {
- return common_nicknamize($str);
- }
}