From: Dietmar Maurer Date: Mon, 27 Apr 2015 09:56:45 +0000 (+0200) Subject: copy LoginWindow.js from manager to manager5 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=5e4d333a28e7f2f52b770ef247893d4a451cdad5;p=pve-manager-legacy.git copy LoginWindow.js from manager to manager5 --- diff --git a/www/manager5/window/LoginWindow.js b/www/manager5/window/LoginWindow.js new file mode 100644 index 00000000..33314447 --- /dev/null +++ b/www/manager5/window/LoginWindow.js @@ -0,0 +1,150 @@ +Ext.define('PVE.window.LoginWindow', { + extend: 'Ext.window.Window', + + // private + onLogon: function() { + var me = this; + + var form = me.getComponent(0).getForm(); + + if(form.isValid()){ + me.el.mask(gettext('Please wait...'), 'x-mask-loading'); + + form.submit({ + failure: function(f, resp){ + me.el.unmask(); + Ext.MessageBox.alert(gettext('Error'), + gettext("Login failed. Please try again"), + function() { + var uf = form.findField('username'); + uf.focus(true, true); + }); + }, + success: function(f, resp){ + me.el.unmask(); + + var handler = me.handler || Ext.emptyFn; + handler.call(me, resp.result.data); + me.close(); + } + }); + } + }, + + initComponent: function() { + var me = this; + + var otp_field = Ext.createWidget('textfield', { + fieldLabel: gettext('OTP'), + name: 'otp', + allowBlank: false, + hidden: true + }); + + Ext.apply(me, { + width: 400, + modal: true, + border: false, + draggable: true, + closable: false, + resizable: false, + layout: 'auto', + title: gettext('Proxmox VE Login'), + + items: [{ + xtype: 'form', + frame: true, + url: '/api2/extjs/access/ticket', + + fieldDefaults: { + labelAlign: 'right' + }, + + defaults: { + anchor: '-5', + allowBlank: false + }, + + items: [ + { + xtype: 'textfield', + fieldLabel: gettext('User name'), + name: 'username', + blankText: gettext("Enter your user name"), + listeners: { + afterrender: function(f) { + // Note: only works if we pass delay 1000 + f.focus(true, 1000); + }, + specialkey: function(f, e) { + if (e.getKey() === e.ENTER) { + var pf = me.query('textfield[name="password"]')[0]; + if (pf.getValue()) { + me.onLogon(); + } else { + pf.focus(false); + } + } + } + } + }, + { + xtype: 'textfield', + inputType: 'password', + fieldLabel: gettext('Password'), + name: 'password', + blankText: gettext("Enter your password"), + listeners: { + specialkey: function(field, e) { + if (e.getKey() === e.ENTER) { + me.onLogon(); + } + } + } + }, + otp_field, + { + xtype: 'pveRealmComboBox', + name: 'realm', + listeners: { + change: function(f, value) { + if (f.needOTP(value)) { + otp_field.setVisible(true); + otp_field.setDisabled(false); + } else { + otp_field.setVisible(false); + otp_field.setDisabled(true); + } + } + } + }, + { + xtype: 'pveLanguageSelector', + fieldLabel: gettext('Language'), + value: Ext.util.Cookies.get('PVELangCookie') || 'en', + name: 'lang', + submitValue: false, + listeners: { + change: function(t, value) { + var dt = Ext.Date.add(new Date(), Ext.Date.YEAR, 10); + Ext.util.Cookies.set('PVELangCookie', value, dt); + me.el.mask(gettext('Please wait...'), 'x-mask-loading'); + window.location.reload(); + } + } + } + ], + buttons: [ + { + text: gettext('Login'), + handler: function(){ + me.onLogon(); + } + } + ] + }] + }); + + me.callParent(); + } +});