some fixes for new installs:

- acl of the anon user gets now set correct
- nopasswordchange ACL for groups get no longer set
- nopasswordchange ACL for user gets only set to 1 (no 0), as in admin
This commit is contained in:
Ralf Becker 2006-07-09 17:23:35 +00:00
parent 5c057a26dd
commit 5fb740f401

View File

@ -897,45 +897,49 @@
* @param string $first first name * @param string $first first name
* @param string $last last name * @param string $last last name
* @param $passwd string cleartext pw * @param $passwd string cleartext pw
* @param string/boolean $group Groupname for users primary group or False for a group, default 'Default' * @param string/boolean $primary_group Groupname for users primary group or False for a group, default 'Default'
* @param boolean $changepw user has right to change pw, default False * @param boolean $changepw user has right to change pw, default False = Pw change NOT allowed
* @param string $email * @param string $email
* @return int the numerical user-id * @return int the numerical user-id
*/ */
function add_account($username,$first,$last,$passwd,$group='default',$changepw=False,$email='') function add_account($username,$first,$last,$passwd,$primary_group='Default',$changepw=False,$email='')
{ {
$this->setup_account_object(); $this->setup_account_object();
$groupid = $group ? $GLOBALS['egw']->accounts->name2id($group) : False; $primary_group_id = $primary_group ? $GLOBALS['egw']->accounts->name2id($primary_group) : False;
if(!($accountid = $GLOBALS['egw']->accounts->name2id($username))) if(!($accountid = $GLOBALS['egw']->accounts->name2id($username)))
{ {
$account = array( $account = array(
'account_type' => $group ? 'u' : 'g', 'account_type' => $primary_group ? 'u' : 'g',
'account_lid' => $username, 'account_lid' => $username,
'account_passwd' => $passwd, 'account_passwd' => $passwd,
'account_firstname' => $first, 'account_firstname' => $first,
'account_lastname' => $last, 'account_lastname' => $last,
'account_status' => 'A', 'account_status' => 'A',
'account_primary_group' => $groupid, 'account_primary_group' => $primary_group_id,
'account_expires' => -1, 'account_expires' => -1,
'account_email' => $email, 'account_email' => $email,
); );
if (!($accountid = $GLOBALS['egw']->accounts->save($account))) if (!($accountid = $GLOBALS['egw']->accounts->save($account)))
{ {
error_log("setup::add_account('$username','$first','$last',\$passwd,'$primary_group',$changepw,'$email') failed! accountid=$accountid");
return false; return false;
} }
} }
$memberships = $GLOBALS['egw']->accounts->memberships($accountid,true); if ($primary_group) // only for users, NOT groups
if($groupid && !in_array($groupid,$memberships))
{ {
$memberships[] = $groupid; $memberships = $GLOBALS['egw']->accounts->memberships($accountid,true);
$GLOBALS['egw']->accounts->set_memberships($memberships,$accountid); if($primary_group_id && !in_array($primary_group_id,$memberships))
{
$memberships[] = $primary_group_id;
$GLOBALS['egw']->accounts->set_memberships($memberships,$accountid);
}
if (!$changepw) $this->add_acl('preferences','nopasswordchange',$accountid);
} }
if (!$group) $this->add_acl('preferences','nopasswordchange',$accountid,(int)!$changepw); error_log("setup::add_account('$username','$first','$last',\$passwd,'$primary_group',$changepw,'$email') successfull created accountid=$accountid");
return $accountid; return $accountid;
} }
@ -996,7 +1000,8 @@
*/ */
function add_acl($apps,$location,$account,$rights=1) function add_acl($apps,$location,$account,$rights=1)
{ {
if (!is_int($account)) error_log("setup::add_acl(".(is_array($apps) ? "array('".implode("','",$apps)."')" : "'$apps'").",'$location',$account,$rights)");
if (!is_numeric($account))
{ {
$this->setup_account_object(); $this->setup_account_object();
$account = $GLOBALS['egw']->accounts->name2id($account); $account = $GLOBALS['egw']->accounts->name2id($account);