forked from extern/egroupware
* Addressbook: storing of account-contact-data did not work for non-admins which are in groups allowed to edit accounts (defined in Addressbook configuration)
This commit is contained in:
parent
95553f514c
commit
98d874e048
@ -931,7 +931,7 @@ class addressbook_bo extends addressbook_so
|
||||
}
|
||||
$to_write = $contact;
|
||||
// (non-admin) user editing his own account, make sure he does not change fields he is not allowed to (eg. via SyncML or xmlrpc)
|
||||
if (!$ignore_acl && !$contact['owner'] && !$this->is_admin($contact))
|
||||
if (!$ignore_acl && !$contact['owner'] && !($this->is_admin($contact) || $this->allow_account_edit()))
|
||||
{
|
||||
foreach($contact as $field => $value)
|
||||
{
|
||||
@ -940,7 +940,7 @@ class addressbook_bo extends addressbook_so
|
||||
// user is not allowed to change that
|
||||
if ($old)
|
||||
{
|
||||
$to_write[$field] = $old[$field];
|
||||
$to_write[$field] = $contact[$field] = $old[$field];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -351,9 +351,7 @@ class addressbook_so
|
||||
if (!$GLOBALS['egw']->acl->check('account_access',32,'admin')) $grants[0] |= EGW_ACL_DELETE;
|
||||
}
|
||||
// allow certain groups to edit contact-data of accounts
|
||||
if ($GLOBALS['egw_info']['server']['allow_account_edit'] &&
|
||||
array_intersect($GLOBALS['egw_info']['server']['allow_account_edit'],
|
||||
$GLOBALS['egw']->accounts->memberships($user, true)))
|
||||
if (self::allow_account_edit($user))
|
||||
{
|
||||
$grants[0] |= EGW_ACL_READ|EGW_ACL_EDIT;
|
||||
}
|
||||
@ -379,6 +377,19 @@ class addressbook_so
|
||||
return isset($GLOBALS['egw_info']['user']['apps']['admin']) && !$GLOBALS['egw']->acl->check('account_access',16,'admin');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if current user is in a group, which is allowed to edit accounts
|
||||
*
|
||||
* @param int $user =null default $this->user
|
||||
* @return boolean
|
||||
*/
|
||||
function allow_account_edit($user=null)
|
||||
{
|
||||
return $GLOBALS['egw_info']['server']['allow_account_edit'] &&
|
||||
array_intersect($GLOBALS['egw_info']['server']['allow_account_edit'],
|
||||
$GLOBALS['egw']->accounts->memberships($user ? $user : $this->user, true));
|
||||
}
|
||||
|
||||
/**
|
||||
* Read all customfields of the given id's
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user