We are no longer offering accounts on this server. Consider https://gitlab.freedesktop.org/ as a place to host projects.

Commit 3be12057 authored by Craig Andrews's avatar Craig Andrews

Add a new event: CanUserChangeField

parent 22310d17
......@@ -489,6 +489,10 @@ ChangePassword: Handle a password change request
- $newpassword: the desired new password
- &$errormsg: set this to an error message if the password could not be changed. If the password was changed, leave this as false
CanUserChangeField: Determines if a user is allowed to change a specific profile field
- $nickname: nickname of the user who would like to know which of their profile fields are mutable
- $field: name of the field the user wants to change (nickname, fullname, password, avatar, etc)
UserDeleteRelated: Specify additional tables to delete entries from when deleting users
- $user: User object
- &$related: array of DB_DataObject class names to delete entries on matching user_id.
......@@ -58,6 +58,19 @@ class PasswordsettingsAction extends AccountSettingsAction
return _('Change password');
function prepare($args){
$user = common_current_user();
Event::handle('CanUserChangeField', array($user->nickname, 'password'));
if(! $fields['password']){
//user is not allowed to change his password
$this->clientError(_('You are not allowed to change your password'));
* Instructions for use
......@@ -86,6 +99,7 @@ class PasswordsettingsAction extends AccountSettingsAction
function showContent()
$user = common_current_user();
$this->elementStart('form', array('method' => 'POST',
'id' => 'form_password',
'class' => 'form_settings',
......@@ -102,26 +102,31 @@ class AccountSettingsNav extends Widget
$this->action->elementStart('ul', array('class' => 'nav'));
if (Event::handle('StartAccountSettingsNav', array(&$this->action))) {
$user = common_current_user();
$menu =
array('profilesettings' =>
$menu = array();
$menu['profilesettings'] =
_('Change your profile settings')),
'avatarsettings' =>
_('Upload an avatar')),
'passwordsettings' =>
_('Change your password')),
'emailsettings' =>
_('Change your profile settings'));
if(Event::handle('CanUserChangeField', array($user->nickname, 'avatar'))){
$menu['avatarsettings'] =
_('Upload an avatar'));
if(Event::handle('CanUserChangeField', array($user->nickname, 'password'))){
$menu['passwordsettings'] =
_('Change your password'));
$menu['emailsettings'] =
_('Change email handling')),
'userdesignsettings' =>
_('Change email handling'));
$menu['userdesignsettings'] =
_('Design your profile')),
'othersettings' =>
_('Design your profile'));
$menu['othersettings'] =
_('Other options')));
_('Other options'));
foreach ($menu as $menuaction => $menudesc) {
......@@ -102,4 +102,15 @@ class LdapPlugin extends Plugin
//return false, indicating that the event has been handled
return false;
function onCanUserChangeField($nickname, $field)
case 'password':
case 'nickname':
case 'email':
return false;
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment