mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-10-05 09:42:30 +02:00
added several checks for account editing in addressbook: doublicate account name, passwords match, set email for new accounts according to policy
This commit is contained in:
parent
13ad291696
commit
8cfef6746d
@ -113,8 +113,8 @@ app.classes.addressbook = AppJS.extend(
|
|||||||
var list = etemplate2.getById(
|
var list = etemplate2.getById(
|
||||||
$j(this.et2.getInstanceManager().DOMContainer).nextAll('.et2_container').attr('id')
|
$j(this.et2.getInstanceManager().DOMContainer).nextAll('.et2_container').attr('id')
|
||||||
);
|
);
|
||||||
var nm = null;
|
var nm = list ? list.widgetContainer.getWidgetById('nm') : null;
|
||||||
if(list != null && (nm = list.widgetContainer.getWidgetById('nm')))
|
if(nm)
|
||||||
{
|
{
|
||||||
// Update the link filter to new contact
|
// Update the link filter to new contact
|
||||||
var filter = {col_filter:{}};
|
var filter = {col_filter:{}};
|
||||||
@ -379,6 +379,12 @@ app.classes.addressbook = AppJS.extend(
|
|||||||
*/
|
*/
|
||||||
check_value: function(widget, own_id)
|
check_value: function(widget, own_id)
|
||||||
{
|
{
|
||||||
|
// if we edit an account, call account_change to let it do it's stuff too
|
||||||
|
if (this.et2.getWidgetById('account_lid'))
|
||||||
|
{
|
||||||
|
this.account_change(null, widget);
|
||||||
|
}
|
||||||
|
|
||||||
var values = this.et2._inst.getValues(this.et2);
|
var values = this.et2._inst.getValues(this.et2);
|
||||||
|
|
||||||
if (widget.id.match(/n_/))
|
if (widget.id.match(/n_/))
|
||||||
@ -653,6 +659,44 @@ app.classes.addressbook = AppJS.extend(
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return this._super.apply(this, arguments);
|
return this._super.apply(this, arguments);
|
||||||
}
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Field changed, call server validation
|
||||||
|
*
|
||||||
|
* @param {jQuery.Event} _ev
|
||||||
|
* @param {et2_button} _widget
|
||||||
|
*/
|
||||||
|
account_change: function(_ev, _widget)
|
||||||
|
{
|
||||||
|
switch(_widget.id)
|
||||||
|
{
|
||||||
|
case 'account_lid':
|
||||||
|
case 'n_family':
|
||||||
|
case 'n_given':
|
||||||
|
case 'email':
|
||||||
|
case 'account_passwd_2':
|
||||||
|
var values = this.et2._inst.getValues(this.et2);
|
||||||
|
var data = {
|
||||||
|
account_id: this.et2.getArrayMgr('content').data.account_id,
|
||||||
|
account_lid: values.account_lid,
|
||||||
|
account_firstname: values.n_given,
|
||||||
|
account_lastname: values.n_family,
|
||||||
|
account_email: values.email,
|
||||||
|
account_passwd: values.account_passwd,
|
||||||
|
account_passwd_2: values.account_passwd_2
|
||||||
|
};
|
||||||
|
|
||||||
|
this.egw.message('');
|
||||||
|
this.egw.json('admin_account::ajax_check', [data], function(_msg)
|
||||||
|
{
|
||||||
|
if (_msg && typeof _msg == 'string')
|
||||||
|
{
|
||||||
|
egw(window).message(_msg, 'error'); // context get's lost :(
|
||||||
|
_widget.getDOMNode().focus();
|
||||||
|
}
|
||||||
|
}, this).sendRequest();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<description/>
|
<description/>
|
||||||
<button label="Ok" id="button[ok]" class="button_ok" onclick="jQuery('table.editname').css('display','none'); if(document.getElementById(form::name('title'))){document.getElementById(form::name('title')).focus();} return false;" image="check" background_image="1"/>
|
<button label="Ok" id="button[ok]" class="button_ok" onclick="jQuery('table.editname').css('display','none'); jQuery('#'+form::name('org_name')).focus(); return false;" image="check" background_image="1"/>
|
||||||
</row>
|
</row>
|
||||||
</rows>
|
</rows>
|
||||||
</grid>
|
</grid>
|
||||||
|
@ -223,4 +223,33 @@ class admin_account
|
|||||||
|
|
||||||
egw_json_response::get()->call('egw.refresh', $msg, 'admin', $account_id, 'delete');
|
egw_json_response::get()->call('egw.refresh', $msg, 'admin', $account_id, 'delete');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check entered data and return error-msg via json data or null
|
||||||
|
*
|
||||||
|
* @param array $data values for account_id and account_lid
|
||||||
|
*/
|
||||||
|
public static function ajax_check(array $data)
|
||||||
|
{
|
||||||
|
// generate default email address
|
||||||
|
if (empty($data['account_email']) || !$data['account_id'])
|
||||||
|
{
|
||||||
|
$email = common::email_address($data['account_firstname'], $data['account_lastname'], $data['account_lid']);
|
||||||
|
if ($email) egw_json_response::get()->assign('addressbook-edit_email', 'value', $email);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$data['account_lid'] && !$data['account_id']) return; // makes no sense to check before
|
||||||
|
|
||||||
|
// set dummy membership to get no error about no members yet
|
||||||
|
$data['account_memberships'] = array($data['account_primary_user'] = $GLOBALS['egw_info']['user']['account_primary_group']);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$cmd = new admin_cmd_edit_user($data['account_id'], $data);
|
||||||
|
$cmd->run(null, false, false, true);
|
||||||
|
}
|
||||||
|
catch(Exception $e)
|
||||||
|
{
|
||||||
|
egw_json_response::get()->data($e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -81,7 +81,7 @@ class admin_cmd_edit_group extends admin_cmd
|
|||||||
}
|
}
|
||||||
if ($check_only) return true;
|
if ($check_only) return true;
|
||||||
|
|
||||||
if ($this->account)
|
if (($update = $this->account))
|
||||||
{
|
{
|
||||||
// invalidate account, before reading it, to code with changed to DB or LDAP outside EGw
|
// invalidate account, before reading it, to code with changed to DB or LDAP outside EGw
|
||||||
accounts::cache_invalidate($data['account_id']);
|
accounts::cache_invalidate($data['account_id']);
|
||||||
@ -102,15 +102,18 @@ class admin_cmd_edit_group extends admin_cmd
|
|||||||
}
|
}
|
||||||
$GLOBALS['hook_values'] =& $data;
|
$GLOBALS['hook_values'] =& $data;
|
||||||
$GLOBALS['egw']->hooks->process($GLOBALS['hook_values']+array(
|
$GLOBALS['egw']->hooks->process($GLOBALS['hook_values']+array(
|
||||||
'location' => $this->account ? 'editgroup' : 'addgroup'
|
'location' => $update ? 'editgroup' : 'addgroup'
|
||||||
),False,True); // called for every app now, not only enabled ones)
|
),False,True); // called for every app now, not only enabled ones)
|
||||||
|
|
||||||
if ($data['account_members'])
|
if ($data['account_members'])
|
||||||
{
|
{
|
||||||
admin_cmd::$accounts->set_members($data['account_members'],$data['account_id']);
|
admin_cmd::$accounts->set_members($data['account_members'],$data['account_id']);
|
||||||
}
|
}
|
||||||
return lang("Account %1 %2",$this->account ? $this->account : $data['account_lid'],
|
// make new account_id available to caller
|
||||||
$this->account ? lang('updated') : lang("created with id #%1",$data['account_id']));
|
$this->account = $data['account_id'];
|
||||||
|
|
||||||
|
return lang("Account %1 %2", $data['account_lid'] ? $data['account_lid'] : accounts::id2name($this->account),
|
||||||
|
$update ? lang('updated') : lang("created with id #%1", $this->account));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -144,6 +144,7 @@ class admin_cmd_edit_user extends admin_cmd_change_pw
|
|||||||
throw new egw_exception_db(lang("Error saving account!"),11);
|
throw new egw_exception_db(lang("Error saving account!"),11);
|
||||||
}
|
}
|
||||||
// make new account_id available to caller
|
// make new account_id available to caller
|
||||||
|
$update = (boolean)$this->account;
|
||||||
if (!$this->account) $this->account = $data['account_id'];
|
if (!$this->account) $this->account = $data['account_id'];
|
||||||
|
|
||||||
if ($data['account_groups'])
|
if ($data['account_groups'])
|
||||||
@ -184,11 +185,11 @@ class admin_cmd_edit_user extends admin_cmd_change_pw
|
|||||||
$data['account_passwd'] = $this->password;
|
$data['account_passwd'] = $this->password;
|
||||||
$GLOBALS['hook_values'] =& $data;
|
$GLOBALS['hook_values'] =& $data;
|
||||||
$GLOBALS['egw']->hooks->process($GLOBALS['hook_values']+array(
|
$GLOBALS['egw']->hooks->process($GLOBALS['hook_values']+array(
|
||||||
'location' => $this->account && $this->run_addaccount_hook !== true ? 'editaccount' : 'addaccount'
|
'location' => $update && $this->run_addaccount_hook !== true ? 'editaccount' : 'addaccount'
|
||||||
),False,True); // called for every app now, not only enabled ones)
|
),False,True); // called for every app now, not only enabled ones)
|
||||||
|
|
||||||
return lang("Account %1 %2",$this->account ? $this->account : $data['account_lid'],
|
return lang("Account %1 %2", $data['account_lid'] ? $data['account_lid'] : accounts::id2name($this->account),
|
||||||
$this->account ? lang('updated') : lang("created with id #%1",$data['account_id']));
|
$update ? lang('updated') : lang("created with id #%1", $this->account));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
* @link http://www.egroupware.org
|
* @link http://www.egroupware.org
|
||||||
* @author Ralf Becker <rb@stylite.de>
|
* @author Ralf Becker <rb@stylite.de>
|
||||||
* @package admin
|
* @package admin
|
||||||
* @copyright (c) 2013 by Ralf Becker <rb@stylite.de>
|
* @copyright (c) 2013-14 by Ralf Becker <rb@stylite.de>
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* @link http://www.egroupware.org
|
* @link http://www.egroupware.org
|
||||||
* @package filemanager
|
* @package filemanager
|
||||||
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
* @copyright (c) 2013 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
* @copyright (c) 2013-14 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
@ -122,9 +122,7 @@ app.classes.admin = AppJS.extend(
|
|||||||
tree.deleteItem('/groups/'+_id, false);
|
tree.deleteItem('/groups/'+_id, false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'edit':
|
default: // add, update, edit, null
|
||||||
case 'update':
|
|
||||||
case 'add':
|
|
||||||
tree.refreshItem('/groups');
|
tree.refreshItem('/groups');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
<rows>
|
<rows>
|
||||||
<row>
|
<row>
|
||||||
<description value="Login ID" for="account_lid"/>
|
<description value="Login ID" for="account_lid"/>
|
||||||
<textbox id="account_lid" class="et2_fullWidth"/>
|
<textbox id="account_lid" class="et2_fullWidth" onchange="app.addressbook.account_change" needed="true"/>
|
||||||
<description/>
|
<description/>
|
||||||
<description value="Expires" for="account_expires"/>
|
<description value="Expires" for="account_expires"/>
|
||||||
<hbox>
|
<hbox>
|
||||||
@ -28,8 +28,8 @@
|
|||||||
<description value="Password" for="account_passwd"/>
|
<description value="Password" for="account_passwd"/>
|
||||||
<passwd id="account_passwd" class="et2_fullWidth"/>
|
<passwd id="account_passwd" class="et2_fullWidth"/>
|
||||||
<description/>
|
<description/>
|
||||||
<description value="Re-enter password" for="account_passwd2"/>
|
<description value="Re-enter password" for="account_passwd_2"/>
|
||||||
<passwd id="account_passwd2" class="et2_fullWidth"/>
|
<passwd id="account_passwd_2" class="et2_fullWidth" onchange="app.addressbook.account_change"/>
|
||||||
<description/>
|
<description/>
|
||||||
</row>
|
</row>
|
||||||
<row valign="top">
|
<row valign="top">
|
||||||
|
Loading…
Reference in New Issue
Block a user