919be4fbbe
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
206 lines
4.4 KiB
JavaScript
206 lines
4.4 KiB
JavaScript
Ext.define('PVE.dc.UserEdit', {
|
|
extend: 'Proxmox.window.Edit',
|
|
alias: ['widget.pveDcUserEdit'],
|
|
|
|
isAdd: true,
|
|
|
|
initComponent : function() {
|
|
var me = this;
|
|
|
|
me.isCreate = !me.userid;
|
|
|
|
var url;
|
|
var method;
|
|
var realm;
|
|
|
|
if (me.isCreate) {
|
|
url = '/api2/extjs/access/users';
|
|
method = 'POST';
|
|
} else {
|
|
url = '/api2/extjs/access/users/' + encodeURIComponent(me.userid);
|
|
method = 'PUT';
|
|
}
|
|
|
|
var verifypw;
|
|
var pwfield;
|
|
|
|
var validate_pw = function() {
|
|
if (verifypw.getValue() !== pwfield.getValue()) {
|
|
return gettext("Passwords do not match");
|
|
}
|
|
return true;
|
|
};
|
|
|
|
verifypw = Ext.createWidget('textfield', {
|
|
inputType: 'password',
|
|
fieldLabel: gettext('Confirm password'),
|
|
name: 'verifypassword',
|
|
submitValue: false,
|
|
disabled: true,
|
|
hidden: true,
|
|
validator: validate_pw
|
|
});
|
|
|
|
pwfield = Ext.createWidget('textfield', {
|
|
inputType: 'password',
|
|
fieldLabel: gettext('Password'),
|
|
minLength: 5,
|
|
name: 'password',
|
|
disabled: true,
|
|
hidden: true,
|
|
validator: validate_pw
|
|
});
|
|
|
|
var update_passwd_field = function(realm) {
|
|
if (realm === 'pve') {
|
|
pwfield.setVisible(true);
|
|
pwfield.setDisabled(false);
|
|
verifypw.setVisible(true);
|
|
verifypw.setDisabled(false);
|
|
} else {
|
|
pwfield.setVisible(false);
|
|
pwfield.setDisabled(true);
|
|
verifypw.setVisible(false);
|
|
verifypw.setDisabled(true);
|
|
}
|
|
|
|
};
|
|
|
|
var column1 = [
|
|
{
|
|
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
|
name: 'userid',
|
|
fieldLabel: gettext('User name'),
|
|
value: me.userid,
|
|
allowBlank: false,
|
|
submitValue: me.isCreate ? true : false
|
|
},
|
|
pwfield, verifypw,
|
|
{
|
|
xtype: 'pveGroupSelector',
|
|
name: 'groups',
|
|
multiSelect: true,
|
|
allowBlank: true,
|
|
fieldLabel: gettext('Group')
|
|
},
|
|
{
|
|
xtype: 'datefield',
|
|
name: 'expire',
|
|
emptyText: 'never',
|
|
format: 'Y-m-d',
|
|
submitFormat: 'U',
|
|
fieldLabel: gettext('Expire')
|
|
},
|
|
{
|
|
xtype: 'proxmoxcheckbox',
|
|
fieldLabel: gettext('Enabled'),
|
|
name: 'enable',
|
|
uncheckedValue: 0,
|
|
defaultValue: 1,
|
|
checked: true
|
|
}
|
|
];
|
|
|
|
var column2 = [
|
|
{
|
|
xtype: 'textfield',
|
|
name: 'firstname',
|
|
fieldLabel: gettext('First Name')
|
|
},
|
|
{
|
|
xtype: 'textfield',
|
|
name: 'lastname',
|
|
fieldLabel: gettext('Last Name')
|
|
},
|
|
{
|
|
xtype: 'textfield',
|
|
name: 'email',
|
|
fieldLabel: gettext('E-Mail'),
|
|
vtype: 'proxmoxMail'
|
|
}
|
|
];
|
|
|
|
if (me.isCreate) {
|
|
column1.splice(1,0,{
|
|
xtype: 'pveRealmComboBox',
|
|
name: 'realm',
|
|
fieldLabel: gettext('Realm'),
|
|
allowBlank: false,
|
|
matchFieldWidth: false,
|
|
listConfig: { width: 300 },
|
|
listeners: {
|
|
change: function(combo, newValue){
|
|
realm = newValue;
|
|
update_passwd_field(realm);
|
|
}
|
|
},
|
|
submitValue: false
|
|
});
|
|
}
|
|
|
|
var ipanel = Ext.create('Proxmox.panel.InputPanel', {
|
|
column1: column1,
|
|
column2: column2,
|
|
columnB: [
|
|
{
|
|
xtype: 'textfield',
|
|
name: 'comment',
|
|
fieldLabel: gettext('Comment')
|
|
}
|
|
],
|
|
advancedItems: [
|
|
{
|
|
xtype: 'textfield',
|
|
name: 'keys',
|
|
fieldLabel: gettext('Key IDs')
|
|
}
|
|
],
|
|
onGetValues: function(values) {
|
|
// hack: ExtJS datefield does not submit 0, so we need to set that
|
|
if (!values.expire) {
|
|
values.expire = 0;
|
|
}
|
|
|
|
if (realm) {
|
|
values.userid = values.userid + '@' + realm;
|
|
}
|
|
|
|
if (!values.password) {
|
|
delete values.password;
|
|
}
|
|
|
|
return values;
|
|
}
|
|
});
|
|
|
|
Ext.applyIf(me, {
|
|
subject: gettext('User'),
|
|
url: url,
|
|
method: method,
|
|
fieldDefaults: {
|
|
labelWidth: 110 // for spanish translation
|
|
},
|
|
items: [ ipanel ]
|
|
});
|
|
|
|
me.callParent();
|
|
|
|
if (!me.isCreate) {
|
|
me.load({
|
|
success: function(response, options) {
|
|
var data = response.result.data;
|
|
if (Ext.isDefined(data.expire)) {
|
|
if (data.expire) {
|
|
data.expire = new Date(data.expire * 1000);
|
|
} else {
|
|
// display 'never' instead of '1970-01-01'
|
|
data.expire = null;
|
|
}
|
|
}
|
|
me.setValues(data);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|