forked from extern/egroupware
Added option to set/change password for a given user via commandline, if authenticating as a rightfull user/admin
This commit is contained in:
parent
7c81140147
commit
29bc1a4896
@ -49,6 +49,9 @@ switch($action)
|
|||||||
case '--edit-user':
|
case '--edit-user':
|
||||||
return do_edit_user($arg0s);
|
return do_edit_user($arg0s);
|
||||||
|
|
||||||
|
case '--change-pw':
|
||||||
|
return do_change_pw($arg0s);
|
||||||
|
|
||||||
case '--delete-user':
|
case '--delete-user':
|
||||||
return do_delete_account($arg0s[2],$arg0s[3]);
|
return do_delete_account($arg0s[2],$arg0s[3]);
|
||||||
|
|
||||||
@ -119,6 +122,8 @@ function usage($action=null,$ret=0)
|
|||||||
|
|
||||||
echo "--edit-user admin-account[@domain],admin-password,account[=new-account-name],first-name,last-name,password,email,expires{never(default)|YYYY-MM-DD|already},can-change-pw{yes(default)|no},anon-user{yes|no(default)},primary-group{Default(default)|...}[,groups,...]\n";
|
echo "--edit-user admin-account[@domain],admin-password,account[=new-account-name],first-name,last-name,password,email,expires{never(default)|YYYY-MM-DD|already},can-change-pw{yes(default)|no},anon-user{yes|no(default)},primary-group{Default(default)|...}[,groups,...]\n";
|
||||||
echo " Edit or add a user to eGroupWare. If you specify groups, they *replace* the exiting memberships!\n";
|
echo " Edit or add a user to eGroupWare. If you specify groups, they *replace* the exiting memberships!\n";
|
||||||
|
echo "--change-pw admin-account[@domain],admin-password,account,password\n";
|
||||||
|
echo " Change/set the password for a given user\n";
|
||||||
echo "--delete-user admin-account[@domain],admin-password,account-to-delete[,account-to-move-data]\n";
|
echo "--delete-user admin-account[@domain],admin-password,account-to-delete[,account-to-move-data]\n";
|
||||||
echo " Deletes a user from eGroupWare. It's data can be moved to an other user or it get deleted too.\n";
|
echo " Deletes a user from eGroupWare. It's data can be moved to an other user or it get deleted too.\n";
|
||||||
echo "--edit-group admin-account[@domain],admin-password,group[=new-group-name],email[,members,...]\n";
|
echo "--edit-group admin-account[@domain],admin-password,group[=new-group-name],email[,members,...]\n";
|
||||||
@ -246,6 +251,58 @@ function do_edit_group($args)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change/Set Password for a given user
|
||||||
|
* 1: 2: 3: 4:
|
||||||
|
* @param array $args admin-account[@domain],admin-password,account,password
|
||||||
|
*/
|
||||||
|
function do_change_pw($args)
|
||||||
|
{
|
||||||
|
array_shift($args); // admin-account
|
||||||
|
array_shift($args); // admin-pw
|
||||||
|
$account = array_shift($args); // account
|
||||||
|
|
||||||
|
$account_exists = true;
|
||||||
|
if (!($data = $GLOBALS['egw']->accounts->read($account)) || $data['account_type'] != 'u')
|
||||||
|
{
|
||||||
|
$account_exists = false;
|
||||||
|
$data = array('account_type' => 'u');
|
||||||
|
}
|
||||||
|
if ($GLOBALS['egw']->acl->check('account_access',$account_exists?16:4,'admin')) // user is explicitly forbidden to edit or add users
|
||||||
|
{
|
||||||
|
fail(2,lang("Permission denied !!!"));
|
||||||
|
}
|
||||||
|
if (!$account_exists)
|
||||||
|
{
|
||||||
|
fail(5,lang("Unknown user to change pw: %1 !!!",$account));
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach(array(
|
||||||
|
'account_lid' => $account,
|
||||||
|
'account_passwd' => !($arg=array_shift($args)) ? null : $arg,
|
||||||
|
) as $name => $value)
|
||||||
|
{
|
||||||
|
if ($value === false) return false; // error in _parse_xyz()
|
||||||
|
//echo $name.': '.(is_array($value) ? implode(', ',$value) : $value)."\n";
|
||||||
|
if (!is_null($value)) $data[$name] = $value;
|
||||||
|
}
|
||||||
|
if($account_exists && $data['account_passwd'])
|
||||||
|
{
|
||||||
|
$auth =& CreateObject('phpgwapi.auth');
|
||||||
|
$auth->change_password(null, $data['account_passwd'], $data['account_id']);
|
||||||
|
$GLOBALS['hook_values']['account_id'] = $data['account_id'];
|
||||||
|
$GLOBALS['hook_values']['old_passwd'] = null;
|
||||||
|
$GLOBALS['hook_values']['new_passwd'] = $data['account_passwd'];
|
||||||
|
$GLOBALS['egw']->hooks->process($GLOBALS['hook_values']+array(
|
||||||
|
'location' => 'changepassword'
|
||||||
|
),False,True); // called for every app now, not only enabled ones)
|
||||||
|
}
|
||||||
|
|
||||||
|
echo lang("Account %1 %2 ",$account,$account_exists). lang('updated')."\n\n";
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Edit or add a user to eGroupWare. If you specify groups, they *replace* the exiting memberships!
|
* Edit or add a user to eGroupWare. If you specify groups, they *replace* the exiting memberships!
|
||||||
* 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12
|
* 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12
|
||||||
|
Loading…
Reference in New Issue
Block a user