mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-07-24 18:36:50 +00:00

The backend has supported the 'mode' parameter for quite a while, however it has not yet been exposed in the GUI, contrary to PMG and PBS. The benefit of 'mode' is that it supports LDAP, LDAPS and LDAP via STARTTLS, compared to just LDAP/LDAPS for the 'secure' parameter. The modified AuthEdit{LDAP,AD} panel will now automatically migrate to the new paramter by hooking into onGetValues/onSetValues. Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
141 lines
3.1 KiB
JavaScript
141 lines
3.1 KiB
JavaScript
Ext.define('PVE.panel.ADInputPanel', {
|
|
extend: 'PVE.panel.AuthBase',
|
|
xtype: 'pveAuthADPanel',
|
|
|
|
initComponent: function() {
|
|
let me = this;
|
|
|
|
if (me.type !== 'ad') {
|
|
throw 'invalid type';
|
|
}
|
|
|
|
me.column1 = [
|
|
{
|
|
xtype: 'textfield',
|
|
name: 'domain',
|
|
fieldLabel: gettext('Domain'),
|
|
emptyText: 'company.net',
|
|
allowBlank: false,
|
|
},
|
|
{
|
|
xtype: 'proxmoxcheckbox',
|
|
fieldLabel: gettext('Case-Sensitive'),
|
|
name: 'case-sensitive',
|
|
uncheckedValue: 0,
|
|
checked: true,
|
|
},
|
|
];
|
|
|
|
me.column2 = [
|
|
{
|
|
xtype: 'textfield',
|
|
fieldLabel: gettext('Server'),
|
|
name: 'server1',
|
|
allowBlank: false,
|
|
},
|
|
{
|
|
xtype: 'proxmoxtextfield',
|
|
fieldLabel: gettext('Fallback Server'),
|
|
deleteEmpty: !me.isCreate,
|
|
name: 'server2',
|
|
},
|
|
{
|
|
xtype: 'proxmoxintegerfield',
|
|
name: 'port',
|
|
fieldLabel: gettext('Port'),
|
|
minValue: 1,
|
|
maxValue: 65535,
|
|
emptyText: gettext('Default'),
|
|
submitEmptyText: false,
|
|
},
|
|
{
|
|
xtype: 'proxmoxKVComboBox',
|
|
name: 'mode',
|
|
fieldLabel: gettext('Mode'),
|
|
editable: false,
|
|
comboItems: [
|
|
['__default__', Proxmox.Utils.defaultText + ' (LDAP)'],
|
|
['ldap', 'LDAP'],
|
|
['ldap+starttls', 'STARTTLS'],
|
|
['ldaps', 'LDAPS'],
|
|
],
|
|
value: '__default__',
|
|
deleteEmpty: !me.isCreate,
|
|
listeners: {
|
|
change: function(field, newValue) {
|
|
let verifyCheckbox = field.nextSibling('proxmoxcheckbox[name=verify]');
|
|
if (newValue === 'ldap' || newValue === '__default__') {
|
|
verifyCheckbox.disable();
|
|
verifyCheckbox.setValue(0);
|
|
} else {
|
|
verifyCheckbox.enable();
|
|
}
|
|
},
|
|
},
|
|
},
|
|
{
|
|
xtype: 'proxmoxcheckbox',
|
|
fieldLabel: gettext('Verify Certificate'),
|
|
name: 'verify',
|
|
unceckedValue: 0,
|
|
disabled: true,
|
|
checked: false,
|
|
autoEl: {
|
|
tag: 'div',
|
|
'data-qtip': gettext('Verify SSL certificate of the server'),
|
|
},
|
|
},
|
|
];
|
|
|
|
me.advancedItems = [
|
|
{
|
|
xtype: 'proxmoxcheckbox',
|
|
fieldLabel: gettext('Check connection'),
|
|
name: 'check-connection',
|
|
uncheckedValue: 0,
|
|
checked: true,
|
|
autoEl: {
|
|
tag: 'div',
|
|
'data-qtip':
|
|
gettext('Verify connection parameters and bind credentials on save'),
|
|
},
|
|
},
|
|
];
|
|
|
|
me.callParent();
|
|
},
|
|
onGetValues: function(values) {
|
|
let me = this;
|
|
|
|
if (!values.verify) {
|
|
if (!me.isCreate) {
|
|
Proxmox.Utils.assemble_field_data(values, { 'delete': 'verify' });
|
|
}
|
|
delete values.verify;
|
|
}
|
|
|
|
if (!me.isCreate) {
|
|
// Delete old `secure` parameter. It has been deprecated in favor to the
|
|
// `mode` parameter. Migration happens automatically in `onSetValues`.
|
|
Proxmox.Utils.assemble_field_data(values, { 'delete': 'secure' });
|
|
}
|
|
|
|
|
|
return me.callParent([values]);
|
|
},
|
|
|
|
onSetValues(values) {
|
|
let me = this;
|
|
|
|
if (values.secure !== undefined && !values.mode) {
|
|
// If `secure` is set, use it to determine the correct setting for `mode`
|
|
// `secure` is later deleted by `onSetValues` .
|
|
// In case *both* are set, we simply ignore `secure` and use
|
|
// whatever `mode` is set to.
|
|
values.mode = values.secure ? 'ldaps' : 'ldap';
|
|
}
|
|
|
|
return me.callParent([values]);
|
|
},
|
|
});
|