]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/window/LoginWindow.js
set default focus of 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 view = this.getView();
13
14 if(form.isValid()){
15 view.el.mask(gettext('Please wait...'), 'x-mask-loading');
16
17 form.submit({
18 failure: function(f, resp){
19 view.el.unmask();
20 var handler = function() {
21 var uf = me.lookupReference('usernameField');
22 uf.focus(true, true);
23 };
24
25 Ext.MessageBox.alert(gettext('Error'),
26 gettext("Login failed. Please try again"),
27 handler);
28 },
29 success: function(f, resp){
30 view.el.unmask();
31
32 var handler = view.handler || Ext.emptyFn;
33 handler.call(me, resp.result.data);
34 view.close();
35 }
36 });
37 }
38 },
39
40 control: {
41 'field[name=username]': {
42 specialkey: function(f, e) {
43 if (e.getKey() === e.ENTER) {
44 var pf = this.lookupReference('passwordField');
45 if (pf.getValue()) {
46 this.onLogon();
47 } else {
48 pf.focus(false);
49 }
50 }
51 }
52 },
53 'field[name=password]': {
54 specialkey: function(f, e) {
55 if (e.getKey() === e.ENTER) {
56 this.onLogon();
57 }
58 }
59 },
60 'field[name=realm]': {
61 change: function(f, value) {
62 var otp_field = this.lookupReference('otpField');
63 if (f.needOTP(value)) {
64 otp_field.setVisible(true);
65 otp_field.setDisabled(false);
66 } else {
67 otp_field.setVisible(false);
68 otp_field.setDisabled(true);
69 }
70 }
71 },
72 'field[name=lang]': {
73 change: function(f, value) {
74 var dt = Ext.Date.add(new Date(), Ext.Date.YEAR, 10);
75 Ext.util.Cookies.set('PVELangCookie', value, dt);
76 this.getView().mask(gettext('Please wait...'), 'x-mask-loading');
77 window.location.reload();
78 }
79 },
80 'button[reference=loginButton]': {
81 click: 'onLogon'
82 }
83 }
84 },
85
86 width: 400,
87
88 modal: true,
89
90 border: false,
91
92 draggable: true,
93
94 closable: false,
95
96 resizable: false,
97
98 layout: 'auto',
99
100 title: gettext('Proxmox VE Login'),
101
102 defaultFocus: 'usernameField',
103
104 items: [{
105 xtype: 'form',
106 layout: 'form',
107 url: '/api2/extjs/access/ticket',
108 reference: 'loginForm',
109
110 fieldDefaults: {
111 labelAlign: 'right',
112 allowBlank: false
113 },
114
115 items: [
116 {
117 xtype: 'textfield',
118 fieldLabel: gettext('User name'),
119 name: 'username',
120 itemId: 'usernameField',
121 reference: 'usernameField',
122 blankText: gettext("Enter your user name")
123 },
124 {
125 xtype: 'textfield',
126 inputType: 'password',
127 fieldLabel: gettext('Password'),
128 name: 'password',
129 reference: 'passwordField',
130 blankText: gettext("Enter your password")
131 },
132 {
133 xtype: 'textfield',
134 fieldLabel: gettext('OTP'),
135 name: 'otp',
136 reference: 'otpField',
137 allowBlank: false,
138 hidden: true
139 },
140 {
141 xtype: 'pveRealmComboBox',
142 name: 'realm'
143 },
144 {
145 xtype: 'pveLanguageSelector',
146 fieldLabel: gettext('Language'),
147 value: Ext.util.Cookies.get('PVELangCookie') || 'en',
148 name: 'lang',
149 reference: 'langField',
150 submitValue: false
151 }
152 ],
153 buttons: [
154 {
155 text: gettext('Login'),
156 reference: 'loginButton'
157 }
158 ]
159 }]
160 });