forked from GNUsocial/gnu-social
By default, don't allow nick changes for profiles
This goes for both users and groups, since they share nickname namespace. If you want to enable nickname changes, just add this to your config: $config['profile']['changenick'] = true; This commit should cover all changes in our usual web forms as well as through the API.
This commit is contained in:
parent
5155854339
commit
a89e91da79
@ -55,7 +55,7 @@ class ApiGroupProfileUpdateAction extends ApiAuthAction
|
||||
{
|
||||
parent::prepare($args);
|
||||
|
||||
$this->nickname = common_canonical_nickname($this->trimmed('nickname'));
|
||||
$this->nickname = Nickname::normalize($this->trimmed('nickname'));
|
||||
|
||||
$this->fullname = $this->trimmed('fullname');
|
||||
$this->homepage = $this->trimmed('homepage');
|
||||
@ -106,14 +106,9 @@ class ApiGroupProfileUpdateAction extends ApiAuthAction
|
||||
|
||||
try {
|
||||
|
||||
if (!empty($this->nickname)) {
|
||||
if (common_config('profile', 'changenick') == true && $this->group->nickname !== $this->nickname) {
|
||||
try {
|
||||
$this->group->nickname = Nickname::normalize($this->nickname, true);
|
||||
} catch (NicknameTakenException $e) {
|
||||
// Abort only if the nickname is occupied by _another_ local group
|
||||
if ($e->profile->id != $this->group->id) {
|
||||
throw new ApiValidationException($e->getMessage());
|
||||
}
|
||||
} catch (NicknameException $e) {
|
||||
throw new ApiValidationException($e->getMessage());
|
||||
}
|
||||
|
@ -152,7 +152,7 @@ class EditgroupAction extends GroupAction
|
||||
function showScripts()
|
||||
{
|
||||
parent::showScripts();
|
||||
$this->autofocus('newnickname');
|
||||
$this->autofocus('fullname');
|
||||
}
|
||||
|
||||
function trySave()
|
||||
@ -165,19 +165,21 @@ class EditgroupAction extends GroupAction
|
||||
|
||||
if (Event::handle('StartGroupSaveForm', array($this))) {
|
||||
|
||||
$nickname = $this->trimmed('newnickname');
|
||||
try {
|
||||
$nickname = Nickname::normalize($nickname, true);
|
||||
} catch (NicknameTakenException $e) {
|
||||
// Abort only if the nickname is occupied by _another_ group
|
||||
if ($e->profile->id != $this->group->profile_id) {
|
||||
// $nickname will only be set if this changenick value is true.
|
||||
if (common_config('profile', 'changenick') == true) {
|
||||
try {
|
||||
$nickname = Nickname::normalize($this->trimmed('newnickname'), true);
|
||||
} catch (NicknameTakenException $e) {
|
||||
// Abort only if the nickname is occupied by _another_ group
|
||||
if ($e->profile->id != $this->group->profile_id) {
|
||||
$this->showForm($e->getMessage());
|
||||
return;
|
||||
}
|
||||
$nickname = Nickname::normalize($this->trimmed('newnickname')); // without in-use check this time
|
||||
} catch (NicknameException $e) {
|
||||
$this->showForm($e->getMessage());
|
||||
return;
|
||||
}
|
||||
$nickname = Nickname::normalize($nickname); // without in-use check this time
|
||||
} catch (NicknameException $e) {
|
||||
$this->showForm($e->getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
$fullname = $this->trimmed('fullname');
|
||||
@ -239,12 +241,16 @@ class EditgroupAction extends GroupAction
|
||||
|
||||
$orig = clone($this->group);
|
||||
|
||||
$this->group->nickname = $nickname;
|
||||
if (common_config('profile', 'changenick') == true && $this->group->nickname !== $nickname) {
|
||||
assert(Nickname::normalize($nickname)===$nickname);
|
||||
common_debug("Changing group nickname from '{$profile->nickname}' to '{$nickname}'.");
|
||||
$this->group->nickname = $nickname;
|
||||
$this->group->mainpage = common_local_url('showgroup', array('nickname' => $this->group->nickname));
|
||||
}
|
||||
$this->group->fullname = $fullname;
|
||||
$this->group->homepage = $homepage;
|
||||
$this->group->description = $description;
|
||||
$this->group->location = $location;
|
||||
$this->group->mainpage = common_local_url('showgroup', array('nickname' => $nickname));
|
||||
$this->group->join_policy = $join_policy;
|
||||
$this->group->force_scope = $force_scope;
|
||||
|
||||
@ -269,7 +275,7 @@ class EditgroupAction extends GroupAction
|
||||
}
|
||||
|
||||
if ($this->group->nickname != $orig->nickname) {
|
||||
common_redirect(common_local_url('editgroup', array('nickname' => $nickname)), 303);
|
||||
common_redirect(common_local_url('editgroup', array('nickname' => $this->group->nickname)), 303);
|
||||
} else {
|
||||
// TRANS: Group edit form success message.
|
||||
$this->showForm(_('Options saved.'));
|
||||
|
@ -70,7 +70,7 @@ class ProfilesettingsAction extends SettingsAction
|
||||
function showScripts()
|
||||
{
|
||||
parent::showScripts();
|
||||
$this->autofocus('nickname');
|
||||
$this->autofocus('fullname');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -100,9 +100,11 @@ class ProfilesettingsAction extends SettingsAction
|
||||
$this->elementStart('li');
|
||||
// TRANS: Field label in form for profile settings.
|
||||
$this->input('nickname', _('Nickname'),
|
||||
($this->arg('nickname')) ? $this->arg('nickname') : $profile->nickname,
|
||||
$this->arg('nickname') ?: $profile->nickname,
|
||||
// TRANS: Tooltip for field label in form for profile settings.
|
||||
_('1-64 lowercase letters or numbers, no punctuation or spaces.'));
|
||||
_('1-64 lowercase letters or numbers, no punctuation or spaces.'),
|
||||
null, false, // "name" (will be set to id), then "required"
|
||||
!common_config('profile', 'changenick') ? array('disabled'=>'disabled') : array());
|
||||
$this->elementEnd('li');
|
||||
$this->elementStart('li');
|
||||
// TRANS: Field label in form for profile settings.
|
||||
@ -237,19 +239,21 @@ class ProfilesettingsAction extends SettingsAction
|
||||
|
||||
if (Event::handle('StartProfileSaveForm', array($this))) {
|
||||
|
||||
$nickname = $this->trimmed('nickname');
|
||||
try {
|
||||
$nickname = Nickname::normalize($nickname, true);
|
||||
} catch (NicknameTakenException $e) {
|
||||
// Abort only if the nickname is occupied by another local profile
|
||||
if ($e->profile->id != $this->scoped->id) {
|
||||
// $nickname will only be set if this changenick value is true.
|
||||
if (common_config('profile', 'changenick') == true) {
|
||||
try {
|
||||
$nickname = Nickname::normalize($this->trimmed('nickname'), true);
|
||||
} catch (NicknameTakenException $e) {
|
||||
// Abort only if the nickname is occupied by another local profile
|
||||
if ($e->profile->id != $this->scoped->id) {
|
||||
$this->showForm($e->getMessage());
|
||||
return;
|
||||
}
|
||||
$nickname = Nickname::normalize($this->trimmed('nickname')); // without in-use check this time
|
||||
} catch (NicknameException $e) {
|
||||
$this->showForm($e->getMessage());
|
||||
return;
|
||||
}
|
||||
$nickname = Nickname::normalize($nickname); // without in-use check this time
|
||||
} catch (NicknameException $e) {
|
||||
$this->showForm($e->getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
$fullname = $this->trimmed('fullname');
|
||||
@ -353,7 +357,12 @@ class ProfilesettingsAction extends SettingsAction
|
||||
|
||||
$orig_profile = clone($profile);
|
||||
|
||||
$profile->nickname = $nickname;
|
||||
if (common_config('profile', 'changenick') == true && $profile->nickname !== $nickname) {
|
||||
assert(Nickname::normalize($nickname)===$nickname);
|
||||
common_debug("Changing user nickname from '{$profile->nickname}' to '{$nickname}'.");
|
||||
$profile->nickname = $nickname;
|
||||
$profile->profileurl = common_profile_url($profile->nickname);
|
||||
}
|
||||
$profile->fullname = $fullname;
|
||||
$profile->homepage = $homepage;
|
||||
$profile->bio = $bio;
|
||||
@ -373,8 +382,6 @@ class ProfilesettingsAction extends SettingsAction
|
||||
$profile->location_ns = $loc->location_ns;
|
||||
}
|
||||
|
||||
$profile->profileurl = common_profile_url($nickname);
|
||||
|
||||
if (common_config('location', 'share') == 'user') {
|
||||
|
||||
$exists = false;
|
||||
|
@ -126,6 +126,7 @@ $default =
|
||||
'profile' =>
|
||||
array('banned' => array(),
|
||||
'biolimit' => null,
|
||||
'changenick' => false,
|
||||
'backup' => true,
|
||||
'restore' => true,
|
||||
'delete' => false,
|
||||
|
@ -147,7 +147,11 @@ class GroupEditForm extends Form
|
||||
$this->out->input('newnickname', _('Nickname'),
|
||||
($this->out->arg('newnickname')) ? $this->out->arg('newnickname') : $nickname,
|
||||
// TRANS: Field title on group edit form.
|
||||
_('1-64 lowercase letters or numbers, no punctuation or spaces.'));
|
||||
_('1-64 lowercase letters or numbers, no punctuation or spaces.'),
|
||||
null, false,
|
||||
$this->group instanceof User_group && !common_config('profile', 'changenick')
|
||||
? array('disabled'=>'disabled') // can't change nickname
|
||||
: array()); // either we can change nickname, or we're creating a new group.
|
||||
$this->out->elementEnd('li');
|
||||
$this->out->elementStart('li');
|
||||
// TRANS: Field label on group edit form.
|
||||
|
Loading…
Reference in New Issue
Block a user