]>
git.proxmox.com Git - proxmox-widget-toolkit.git/blob - src/window/AuthEditLDAP.js
2 Ext
.define('Proxmox.panel.LDAPInputPanelViewModel', {
3 extend
: 'Ext.app.ViewModel',
5 alias
: 'viewmodel.pmxAuthLDAPPanel',
13 tls_enabled: function(get) {
14 return get('mode') !== 'ldap';
21 Ext
.define('Proxmox.panel.LDAPInputPanel', {
22 extend
: 'Proxmox.panel.InputPanel',
23 xtype
: 'pmxAuthLDAPPanel',
24 mixins
: ['Proxmox.Mixin.CBind'],
27 type
: 'pmxAuthLDAPPanel',
32 onlineHelp
: 'user-realms-ldap',
34 onGetValues: function(values
) {
36 values
.type
= this.type
;
39 if (values
.anonymous_search
) {
44 if (!Array
.isArray(values
.delete)) {
45 let tmp
= values
.delete;
47 values
.delete.push(tmp
);
50 values
.delete.push("bind-dn");
51 values
.delete.push("password");
54 delete values
.anonymous_search
;
59 onSetValues: function(values
) {
60 values
.anonymous_search
= values
["bind-dn"] ? 0 : 1;
68 xtype
: 'pmxDisplayEditField',
72 editable
: '{isCreate}',
74 fieldLabel
: gettext('Realm'),
78 xtype
: 'proxmoxtextfield',
79 fieldLabel
: gettext('Base Domain Name'),
82 emptyText
: 'cn=Users,dc=company,dc=net',
85 xtype
: 'proxmoxtextfield',
86 fieldLabel
: gettext('User Attribute Name'),
89 emptyText
: 'uid / sAMAccountName',
92 xtype
: 'proxmoxcheckbox',
93 fieldLabel
: gettext('Anonymous Search'),
94 name
: 'anonymous_search',
96 value
: '{anonymous_search}',
100 xtype
: 'proxmoxtextfield',
101 fieldLabel
: gettext('Bind Domain Name'),
104 emptyText
: 'cn=user,dc=company,dc=net',
106 disabled
: "{anonymous_search}",
110 xtype
: 'proxmoxtextfield',
111 inputType
: 'password',
112 fieldLabel
: gettext('Bind Password'),
116 emptyText
: get => !get('isCreate') ? gettext('Unchanged') : '',
119 disabled
: "{anonymous_search}",
126 xtype
: 'proxmoxtextfield',
128 fieldLabel
: gettext('Server'),
132 xtype
: 'proxmoxtextfield',
134 fieldLabel
: gettext('Fallback Server'),
137 deleteEmpty
: '{!isCreate}',
141 xtype
: 'proxmoxintegerfield',
143 fieldLabel
: gettext('Port'),
146 emptyText
: gettext('Default'),
147 submitEmptyText
: false,
151 xtype
: 'proxmoxKVComboBox',
153 fieldLabel
: gettext('Mode'),
157 ['ldap+starttls', 'STARTTLS'],
162 deleteEmpty
: '{!isCreate}',
163 value
: get => get('isCreate') ? 'ldap' : 'LDAP',
167 xtype
: 'proxmoxcheckbox',
168 fieldLabel
: gettext('Verify Certificate'),
172 deleteEmpty
: '{!isCreate}',
176 disabled
: '{!tls_enabled}',
180 'data-qtip': gettext('Verify TLS certificate of the server'),
190 fieldLabel
: gettext('Comment'),
192 deleteEmpty
: '{!isCreate}',
200 Ext
.define('Proxmox.panel.LDAPSyncInputPanel', {
201 extend
: 'Proxmox.panel.InputPanel',
202 xtype
: 'pmxAuthLDAPSyncPanel',
203 mixins
: ['Proxmox.Mixin.CBind'],
205 editableAttributes
: ['firstname', 'lastname', 'email'],
206 editableDefaults
: ['scope', 'enable-new'],
212 // (de)construct the sync-attributes from the list above,
213 // not touching all others
214 onGetValues: function(values
) {
217 me
.editableDefaults
.forEach((attr
) => {
219 me
.default_opts
[attr
] = values
[attr
];
222 delete me
.default_opts
[attr
];
225 let vanished_opts
= [];
226 ['acl', 'entry', 'properties'].forEach((prop
) => {
227 if (values
[`remove-vanished-${prop}`]) {
228 vanished_opts
.push(prop
);
230 delete values
[`remove-vanished-${prop}`];
232 me
.default_opts
['remove-vanished'] = vanished_opts
.join(';');
234 values
['sync-defaults-options'] = Proxmox
.Utils
.printPropertyString(me
.default_opts
);
235 me
.editableAttributes
.forEach((attr
) => {
237 me
.sync_attributes
[attr
] = values
[attr
];
240 delete me
.sync_attributes
[attr
];
243 values
['sync-attributes'] = Proxmox
.Utils
.printPropertyString(me
.sync_attributes
);
245 Proxmox
.Utils
.delete_if_default(values
, 'sync-defaults-options');
246 Proxmox
.Utils
.delete_if_default(values
, 'sync-attributes');
248 // Force values.delete to be an array
249 if (typeof values
.delete === 'string') {
250 values
.delete = values
.delete.split(',');
254 delete values
.delete; // on create we cannot delete values
260 setValues: function(values
) {
263 if (values
['sync-attributes']) {
264 me
.sync_attributes
= Proxmox
.Utils
.parsePropertyString(values
['sync-attributes']);
265 delete values
['sync-attributes'];
266 me
.editableAttributes
.forEach((attr
) => {
267 if (me
.sync_attributes
[attr
]) {
268 values
[attr
] = me
.sync_attributes
[attr
];
272 if (values
['sync-defaults-options']) {
273 me
.default_opts
= Proxmox
.Utils
.parsePropertyString(values
['sync-defaults-options']);
274 delete values
.default_opts
;
275 me
.editableDefaults
.forEach((attr
) => {
276 if (me
.default_opts
[attr
]) {
277 values
[attr
] = me
.default_opts
[attr
];
281 if (me
.default_opts
['remove-vanished']) {
282 let opts
= me
.default_opts
['remove-vanished'].split(';');
283 for (const opt
of opts
) {
284 values
[`remove-vanished-${opt}`] = 1;
288 return me
.callParent([values
]);
293 xtype
: 'proxmoxtextfield',
295 fieldLabel
: gettext('First Name attribute'),
298 xtype
: 'proxmoxtextfield',
300 fieldLabel
: gettext('Last Name attribute'),
303 xtype
: 'proxmoxtextfield',
305 fieldLabel
: gettext('E-Mail attribute'),
308 xtype
: 'displayfield',
309 value
: gettext('Default Sync Options'),
312 xtype
: 'proxmoxKVComboBox',
313 value
: '__default__',
319 gettext("{0} ({1})"),
320 Proxmox
.Utils
.yesText
,
321 Proxmox
.Utils
.defaultText
,
324 ['true', Proxmox
.Utils
.yesText
],
325 ['false', Proxmox
.Utils
.noText
],
328 fieldLabel
: gettext('Enable new users'),
334 xtype
: 'proxmoxtextfield',
335 name
: 'user-classes',
336 fieldLabel
: gettext('User classes'),
338 emptyText
: 'inetorgperson, posixaccount, person, user',
341 'data-qtip': gettext('Default user classes: inetorgperson, posixaccount, person, user'),
345 xtype
: 'proxmoxtextfield',
347 fieldLabel
: gettext('User Filter'),
355 title
: gettext('Remove Vanished Options'),
358 xtype
: 'proxmoxcheckbox',
359 fieldLabel
: gettext('ACL'),
360 name
: 'remove-vanished-acl',
361 boxLabel
: gettext('Remove ACLs of vanished users'),
364 xtype
: 'proxmoxcheckbox',
365 fieldLabel
: gettext('Entry'),
366 name
: 'remove-vanished-entry',
367 boxLabel
: gettext('Remove vanished user'),
370 xtype
: 'proxmoxcheckbox',
371 fieldLabel
: gettext('Properties'),
372 name
: 'remove-vanished-properties',
373 boxLabel
: gettext('Remove vanished properties from synced users.'),