]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/window/LoginWindow.js
Remove redundant helper for login window
[pve-manager.git] / www / manager6 / window / LoginWindow.js
1 Ext.define('PVE.window.LoginWindow', {
2 extend: 'Ext.window.Window',
3
4 controller: {
5
6 xclass: 'Ext.app.ViewController',
7
8 onLogon: function() {
9 var me = this;
10
11 var form = this.lookupReference('loginForm');
12 var unField = this.lookupReference('usernameField');
13 var saveunField = this.lookupReference('saveunField');
14 var view = this.getView();
15
16 if(form.isValid()){
17 view.el.mask(gettext('Please wait...'), 'x-mask-loading');
18
19 // set or clear username
20 var sp = Ext.state.Manager.getProvider();
21 if (saveunField.getValue() === true) {
22 sp.set(unField.getStateId(), unField.getValue());
23 } else {
24 sp.clear(unField.getStateId());
25 }
26 sp.set(saveunField.getStateId(), saveunField.getValue());
27
28 form.submit({
29 failure: function(f, resp){
30 view.el.unmask();
31 var handler = function() {
32 var uf = me.lookupReference('usernameField');
33 uf.focus(true, true);
34 };
35
36 Ext.MessageBox.alert(gettext('Error'),
37 gettext("Login failed. Please try again"),
38 handler);
39 },
40 success: function(f, resp){
41 view.el.unmask();
42
43 var handler = view.handler || Ext.emptyFn;
44 handler.call(me, resp.result.data);
45 view.close();
46 }
47 });
48 }
49 },
50
51 control: {
52 'field[name=username]': {
53 specialkey: function(f, e) {
54 if (e.getKey() === e.ENTER) {
55 var pf = this.lookupReference('passwordField');
56 if (pf.getValue()) {
57 this.onLogon();
58 } else {
59 pf.focus(false);
60 }
61 }
62 }
63 },
64 'field[name=password]': {
65 specialkey: function(f, e) {
66 if (e.getKey() === e.ENTER) {
67 this.onLogon();
68 }
69 }
70 },
71 'field[name=realm]': {
72 change: function(f, value) {
73 var otp_field = this.lookupReference('otpField');
74 if (f.needOTP(value)) {
75 otp_field.setVisible(true);
76 otp_field.setDisabled(false);
77 } else {
78 otp_field.setVisible(false);
79 otp_field.setDisabled(true);
80 }
81 }
82 },
83 'field[name=lang]': {
84 change: function(f, value) {
85 var dt = Ext.Date.add(new Date(), Ext.Date.YEAR, 10);
86 Ext.util.Cookies.set('PVELangCookie', value, dt);
87 this.getView().mask(gettext('Please wait...'), 'x-mask-loading');
88 window.location.reload();
89 }
90 },
91 'button[reference=loginButton]': {
92 click: 'onLogon'
93 },
94 '#': {
95 show: function() {
96 var sp = Ext.state.Manager.getProvider();
97 var checkboxField = this.lookupReference('saveunField');
98 var unField = this.lookupReference('usernameField');
99
100 var checked = sp.get(checkboxField.getStateId());
101 checkboxField.setValue(checked);
102
103 if(checked === true) {
104 var username = sp.get(unField.getStateId());
105 unField.setValue(username);
106 var pwField = this.lookupReference('passwordField');
107 pwField.focus();
108 }
109 }
110 }
111 }
112 },
113
114 width: 400,
115
116 modal: true,
117
118 border: false,
119
120 draggable: true,
121
122 closable: false,
123
124 resizable: false,
125
126 layout: 'auto',
127
128 title: gettext('Proxmox VE Login'),
129
130 defaultFocus: 'usernameField',
131
132 items: [{
133 xtype: 'form',
134 layout: 'form',
135 url: '/api2/extjs/access/ticket',
136 reference: 'loginForm',
137
138 fieldDefaults: {
139 labelAlign: 'right',
140 allowBlank: false
141 },
142
143 items: [
144 {
145 xtype: 'textfield',
146 fieldLabel: gettext('User name'),
147 name: 'username',
148 itemId: 'usernameField',
149 reference: 'usernameField',
150 stateId: 'login-username'
151 },
152 {
153 xtype: 'textfield',
154 inputType: 'password',
155 fieldLabel: gettext('Password'),
156 name: 'password',
157 reference: 'passwordField'
158 },
159 {
160 xtype: 'textfield',
161 fieldLabel: gettext('OTP'),
162 name: 'otp',
163 reference: 'otpField',
164 allowBlank: false,
165 hidden: true
166 },
167 {
168 xtype: 'pveRealmComboBox',
169 name: 'realm'
170 },
171 {
172 xtype: 'pveLanguageSelector',
173 fieldLabel: gettext('Language'),
174 value: Ext.util.Cookies.get('PVELangCookie') || 'en',
175 name: 'lang',
176 reference: 'langField',
177 submitValue: false
178 }
179 ],
180 buttons: [
181 {
182 xtype: 'checkbox',
183 fieldLabel: gettext('Save User name'),
184 name: 'saveusername',
185 reference: 'saveunField',
186 stateId: 'login-saveusername',
187 labelWidth: 'auto',
188 labelAlign: 'right',
189 submitValue: false
190 },
191 {
192 text: gettext('Login'),
193 reference: 'loginButton'
194 }
195 ]
196 }]
197 });