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