]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/dc/UserEdit.js
ui: eslint: fix trailing spaces
[pve-manager.git] / www / manager6 / dc / UserEdit.js
1 Ext.define('PVE.dc.UserEdit', {
2 extend: 'Proxmox.window.Edit',
3 alias: ['widget.pveDcUserEdit'],
4
5 isAdd: true,
6
7 initComponent : function() {
8 var me = this;
9
10 me.isCreate = !me.userid;
11
12 var url;
13 var method;
14 var realm;
15
16 if (me.isCreate) {
17 url = '/api2/extjs/access/users';
18 method = 'POST';
19 } else {
20 url = '/api2/extjs/access/users/' + encodeURIComponent(me.userid);
21 method = 'PUT';
22 }
23
24 var verifypw;
25 var pwfield;
26
27 var validate_pw = function() {
28 if (verifypw.getValue() !== pwfield.getValue()) {
29 return gettext("Passwords do not match");
30 }
31 return true;
32 };
33
34 verifypw = Ext.createWidget('textfield', {
35 inputType: 'password',
36 fieldLabel: gettext('Confirm password'),
37 name: 'verifypassword',
38 submitValue: false,
39 disabled: true,
40 hidden: true,
41 validator: validate_pw
42 });
43
44 pwfield = Ext.createWidget('textfield', {
45 inputType: 'password',
46 fieldLabel: gettext('Password'),
47 minLength: 5,
48 name: 'password',
49 disabled: true,
50 hidden: true,
51 validator: validate_pw
52 });
53
54 var update_passwd_field = function(realm) {
55 if (realm === 'pve') {
56 pwfield.setVisible(true);
57 pwfield.setDisabled(false);
58 verifypw.setVisible(true);
59 verifypw.setDisabled(false);
60 } else {
61 pwfield.setVisible(false);
62 pwfield.setDisabled(true);
63 verifypw.setVisible(false);
64 verifypw.setDisabled(true);
65 }
66
67 };
68
69 var column1 = [
70 {
71 xtype: me.isCreate ? 'textfield' : 'displayfield',
72 name: 'userid',
73 fieldLabel: gettext('User name'),
74 value: me.userid,
75 renderer: Ext.String.htmlEncode,
76 allowBlank: false,
77 submitValue: me.isCreate ? true : false
78 },
79 pwfield, verifypw,
80 {
81 xtype: 'pveGroupSelector',
82 name: 'groups',
83 multiSelect: true,
84 allowBlank: true,
85 fieldLabel: gettext('Group')
86 },
87 {
88 xtype: 'pmxExpireDate',
89 name: 'expire',
90 },
91 {
92 xtype: 'proxmoxcheckbox',
93 fieldLabel: gettext('Enabled'),
94 name: 'enable',
95 uncheckedValue: 0,
96 defaultValue: 1,
97 checked: true
98 }
99 ];
100
101 var column2 = [
102 {
103 xtype: 'textfield',
104 name: 'firstname',
105 fieldLabel: gettext('First Name')
106 },
107 {
108 xtype: 'textfield',
109 name: 'lastname',
110 fieldLabel: gettext('Last Name')
111 },
112 {
113 xtype: 'textfield',
114 name: 'email',
115 fieldLabel: gettext('E-Mail'),
116 vtype: 'proxmoxMail'
117 }
118 ];
119
120 if (me.isCreate) {
121 column1.splice(1,0,{
122 xtype: 'pmxRealmComboBox',
123 name: 'realm',
124 fieldLabel: gettext('Realm'),
125 allowBlank: false,
126 matchFieldWidth: false,
127 listConfig: { width: 300 },
128 listeners: {
129 change: function(combo, newValue){
130 realm = newValue;
131 update_passwd_field(realm);
132 }
133 },
134 submitValue: false
135 });
136 }
137
138 var ipanel = Ext.create('Proxmox.panel.InputPanel', {
139 column1: column1,
140 column2: column2,
141 columnB: [
142 {
143 xtype: 'textfield',
144 name: 'comment',
145 fieldLabel: gettext('Comment')
146 }
147 ],
148 advancedItems: [
149 {
150 xtype: 'textfield',
151 name: 'keys',
152 fieldLabel: gettext('Key IDs')
153 }
154 ],
155 onGetValues: function(values) {
156 if (realm) {
157 values.userid = values.userid + '@' + realm;
158 }
159
160 if (!values.password) {
161 delete values.password;
162 }
163
164 return values;
165 }
166 });
167
168 Ext.applyIf(me, {
169 subject: gettext('User'),
170 url: url,
171 method: method,
172 fieldDefaults: {
173 labelWidth: 110 // for spanish translation
174 },
175 items: [ ipanel ]
176 });
177
178 me.callParent();
179
180 if (!me.isCreate) {
181 me.load({
182 success: function(response, options) {
183 var data = response.result.data;
184 me.setValues(data);
185 if (data.keys) {
186 if ( data.keys === 'x!oath' || data.keys === 'x!u2f' ) {
187 me.down('[name="keys"]').setDisabled(1);
188 }
189 }
190 }
191 });
192 }
193 }
194 });