uf.focus(true, true);
};
- Ext.MessageBox.alert(gettext('Error'),
- gettext("Login failed. Please try again"),
- handler);
+ let emsg = gettext("Login failed. Please try again");
+
+ if (resp.failureType === "connect") {
+ emsg = gettext("Connection failure. Network error or Proxmox VE services not running?");
+ }
+
+ Ext.MessageBox.alert(gettext('Error'), emsg, handler);
},
success: function(data) {
var me = this;
msg.close();
if (res.errorCode) {
Proxmox.Utils.authClear();
- Ext.Msg.alert(gettext('Error'), "U2F Error: "+res.errorCode);
+ Ext.Msg.alert(gettext('Error'), PVE.Utils.render_u2f_error(res.errorCode));
return;
}
delete res.errorCode;
}
}
},
- 'field[name=realm]': {
- change: function(f, value) {
- var otp_field = this.lookupReference('otpField');
- if (f.needOTP(value)) {
- otp_field.setVisible(true);
- otp_field.setDisabled(false);
- } else {
- otp_field.setVisible(false);
- otp_field.setDisabled(true);
- }
- }
- },
'field[name=lang]': {
change: function(f, value) {
var dt = Ext.Date.add(new Date(), Ext.Date.YEAR, 10);
},
width: 400,
-
modal: true,
-
border: false,
-
draggable: true,
-
closable: false,
-
resizable: false,
-
layout: 'auto',
title: gettext('Proxmox VE Login'),
defaultFocus: 'usernameField',
-
defaultButton: 'loginButton',
items: [{
reference: 'passwordField'
},
{
- xtype: 'textfield',
- fieldLabel: gettext('OTP'),
- name: 'otp',
- reference: 'otpField',
- allowBlank: false,
- hidden: true
- },
- {
- xtype: 'pveRealmComboBox',
+ xtype: 'pmxRealmComboBox',
name: 'realm'
},
{
name: 'saveusername',
reference: 'saveunField',
stateId: 'login-saveusername',
- labelWidth: 'auto',
+ labelWidth: 250,
labelAlign: 'right',
submitValue: false
},
modal: true,
resizable: false,
- title: gettext('Two Factor Authentication'),
+ title: 'Two-Factor Authentication',
layout: 'form',
defaultButton: 'loginButton',
defaultFocus: 'otpField',
login: function() {
var me = this;
var view = me.getView();
- view.onLogin(me.lookup('otpField').value);
+ view.onLogin(me.lookup('otpField').getValue());
view.close();
},
cancel: function() {
items: [
{
xtype: 'textfield',
- fieldLabel: gettext('Please enter your OTP token:'),
+ fieldLabel: gettext('Please enter your OTP verification code:'),
name: 'otp',
itemId: 'otpField',
reference: 'otpField',
- allowBlank: false,
- },
+ allowBlank: false
+ }
],
buttons: [