]> git.proxmox.com Git - pmg-gui.git/blob - js/UserEdit.js
js/UserEdit.js: set isCreate to true
[pmg-gui.git] / js / UserEdit.js
1 Ext.define('PMG.UserViewModel', {
2 extend: 'Ext.app.ViewModel',
3 alias: 'viewmodel.pmgUserViewModel',
4
5 data: {
6 userid: undefined,
7 isCreate: true
8 },
9
10 formulas: {
11 isCreate: function (get) {
12 return !get('userid');
13 },
14 isSuperUser: function (get) {
15 return get('userid') === 'root@pam';
16 }
17 }
18 });
19
20 Ext.define('PMG.UserEdit', {
21 extend: 'Proxmox.window.Edit',
22 alias: ['widget.pmgUserEdit'],
23
24 config: {
25 userid: undefined
26 },
27
28 viewModel: { type: 'pmgUserViewModel' },
29
30 isAdd: true,
31
32 subject: gettext('User'),
33
34 fieldDefaults: { labelWidth: 120 },
35
36 items: {
37 xtype: 'inputpanel',
38 column1: [
39 {
40 xtype: 'textfield',
41 name: 'username',
42 fieldLabel: gettext('User name'),
43 allowBlank: false,
44 bind: {
45 submitValue: '{isCreate}',
46 editable: '{isCreate}'
47 }
48 },
49 {
50 xtype: 'textfield',
51 inputType: 'password',
52 fieldLabel: gettext('Password'),
53 minLength: 5,
54 allowBlank: false,
55 name: 'password',
56 listeners: {
57 change: function(field){
58 field.next().validate();
59 },
60 blur: function(field){
61 field.next().validate();
62 }
63 },
64 hidden: true, // avoid flicker
65 bind: {
66 hidden: '{!isCreate}',
67 disabled: '{!isCreate}'
68 }
69 },
70 {
71 xtype: 'textfield',
72 inputType: 'password',
73 fieldLabel: gettext('Confirm password'),
74 name: 'verifypassword',
75 vtype: 'password',
76 initialPassField: 'password',
77 allowBlank: false,
78 submitValue: false,
79 hidden: true, // avoid flicker
80 bind: {
81 hidden: '{!isCreate}',
82 disabled: '{!isCreate}'
83 }
84 },
85 {
86 xtype: 'pmgRoleSelector',
87 name: 'role',
88 allowBlank: false,
89 fieldLabel: gettext('Role'),
90 bind: {
91 disabled: '{isSuperUser}'
92 }
93 },
94 {
95 xtype: 'datefield',
96 name: 'expire',
97 emptyText: Proxmox.Utils.neverText,
98 format: 'Y-m-d',
99 submitFormat: 'U',
100 fieldLabel: gettext('Expire'),
101 bind: {
102 disabled: '{isSuperUser}'
103 }
104 },
105 {
106 xtype: 'proxmoxcheckbox',
107 fieldLabel: gettext('Enabled'),
108 name: 'enable',
109 uncheckedValue: 0,
110 defaultValue: 1,
111 checked: true,
112 bind: {
113 disabled: '{isSuperUser}'
114 }
115 }
116 ],
117
118 column2: [
119 {
120 xtype: 'proxmoxtextfield',
121 name: 'firstname',
122 fieldLabel: gettext('First Name'),
123 bind: {
124 deleteEmpty: '{!isCreate}'
125 }
126 },
127 {
128 xtype: 'proxmoxtextfield',
129 name: 'lastname',
130 fieldLabel: gettext('Last Name'),
131 bind: {
132 deleteEmpty: '{!isCreate}'
133 }
134 },
135 {
136 xtype: 'proxmoxtextfield',
137 name: 'email',
138 fieldLabel: gettext('E-Mail'),
139 vtype: 'proxmoxMail',
140 bind: {
141 deleteEmpty: '{!isCreate}'
142 }
143 }
144 ],
145
146 columnB: [
147 {
148 xtype: 'proxmoxtextfield',
149 name: 'comment',
150 fieldLabel: gettext('Comment'),
151 bind: {
152 disabled: '{isSuperUser}',
153 deleteEmpty: '{!isCreate}'
154 }
155 },
156 {
157 xtype: 'proxmoxtextfield',
158 name: 'keys',
159 fieldLabel: gettext('Key IDs'),
160 bind: {
161 deleteEmpty: '{!isCreate}'
162 }
163 }
164 ]
165 },
166
167 controller: {
168
169 xclass: 'Ext.app.ViewController',
170
171 initViewModel: function(viewModel) {
172
173 var view = this.getView();
174 var userid = view.getUserid();
175
176 viewModel.set('userid', userid);
177 }
178 },
179
180 getValues: function(dirtyOnly) {
181 var me = this;
182
183 var values = me.callParent(arguments);
184
185 // hack: ExtJS datefield does not submit 0, so we need to set that
186 if (!values.expire) {
187 values.expire = 0;
188 }
189
190 if (me.create) {
191 values.userid = values.username + '@pmg';
192 }
193
194 delete values.username;
195
196 if (!values.password) {
197 delete values.password;
198 }
199
200 return values;
201 },
202
203 setValues: function(values) {
204 var me = this;
205
206 if (Ext.isDefined(values.expire)) {
207 if (values.expire) {
208 values.expire = new Date(values.expire * 1000);
209 } else {
210 // display 'never' instead of '1970-01-01'
211 values.expire = null;
212 }
213 }
214
215 me.callParent([values]);
216 },
217
218 create: true,
219 url: '/api2/extjs/access/users',
220 autoLoad: false,
221 method: 'POST',
222
223 updateUserid: function(userid) {
224 var me = this;
225
226 me.create = !userid; // fixme
227
228 if (!userid) {
229 autoLoad = false;
230 me.url = '/api2/extjs/access/users';
231 me.method = 'POST';
232 } else {
233 me.autoLoad = true;
234 me.url = '/api2/extjs/access/users/' + userid;
235 me.method = 'PUT';
236 }
237
238 return userid;
239 }
240 });