]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/window/LoginWindow.js
2 Ext
.define('PVE.window.LoginWindow', {
3 extend
: 'Ext.window.Window',
7 xclass
: 'Ext.app.ViewController',
12 var form
= this.lookupReference('loginForm');
13 var unField
= this.lookupReference('usernameField');
14 var saveunField
= this.lookupReference('saveunField');
15 var view
= this.getView();
17 if (!form
.isValid()) {
21 view
.el
.mask(gettext('Please wait...'), 'x-mask-loading');
23 // set or clear username
24 var sp
= Ext
.state
.Manager
.getProvider();
25 if (saveunField
.getValue() === true) {
26 sp
.set(unField
.getStateId(), unField
.getValue());
28 sp
.clear(unField
.getStateId());
30 sp
.set(saveunField
.getStateId(), saveunField
.getValue());
33 failure: function(f
, resp
){
36 success: function(f
, resp
){
39 var data
= resp
.result
.data
;
40 if (Ext
.isDefined(data
.U2FChallenge
)) {
49 failure: function(resp
) {
51 var view
= me
.getView();
53 var handler = function() {
54 var uf
= me
.lookupReference('usernameField');
58 Ext
.MessageBox
.alert(gettext('Error'),
59 gettext("Login failed. Please try again"),
62 success: function(data
) {
64 var view
= me
.getView();
65 var handler
= view
.handler
|| Ext
.emptyFn
;
66 handler
.call(me
, data
);
70 perform_u2f: function(data
) {
72 // Store first factor login information first:
73 data
.LoggedOut
= true;
74 Proxmox
.Utils
.setAuthData(data
);
76 var msg
= Ext
.Msg
.show({
77 title
: 'U2F: '+gettext('Verification'),
78 message
: gettext('Please press the button on your U2F Device'),
81 var chlg
= data
.U2FChallenge
;
83 version
: chlg
.version
,
84 keyHandle
: chlg
.keyHandle
86 u2f
.sign(chlg
.appId
, chlg
.challenge
, [key
], function(res
) {
89 Proxmox
.Utils
.authClear();
90 Ext
.Msg
.alert(gettext('Error'), "U2F Error: "+res
.errorCode
);
97 finish_u2f: function(res
) {
99 var view
= me
.getView();
100 view
.el
.mask(gettext('Please wait...'), 'x-mask-loading');
101 var params
= { response
: JSON
.stringify(res
) };
102 Proxmox
.Utils
.API2Request({
103 url
: '/api2/extjs/access/tfa',
106 timeout
: 5000, // it'll delay both success & failure
107 success: function(resp
, opts
) {
109 // Fill in what we copy over from the 1st factor:
110 var data
= resp
.result
.data
;
111 data
.CSRFPreventionToken
= Proxmox
.CSRFPreventionToken
;
112 data
.username
= Proxmox
.UserName
;
113 // Finish logging in:
116 failure: function(resp
, opts
) {
117 Proxmox
.Utils
.authClear();
124 'field[name=username]': {
125 specialkey: function(f
, e
) {
126 if (e
.getKey() === e
.ENTER
) {
127 var pf
= this.lookupReference('passwordField');
128 if (!pf
.getValue()) {
134 'field[name=realm]': {
135 change: function(f
, value
) {
136 var otp_field
= this.lookupReference('otpField');
137 if (f
.needOTP(value
)) {
138 otp_field
.setConfig('allowBlank', false);
139 otp_field
.setEmptyText(gettext('2nd factor'));
141 otp_field
.setConfig('allowBlank', true);
142 otp_field
.setEmptyText(gettext('2nd factor, if required'));
144 otp_field
.validate();
147 'field[name=lang]': {
148 change: function(f
, value
) {
149 var dt
= Ext
.Date
.add(new Date(), Ext
.Date
.YEAR
, 10);
150 Ext
.util
.Cookies
.set('PVELangCookie', value
, dt
);
151 this.getView().mask(gettext('Please wait...'), 'x-mask-loading');
152 window
.location
.reload();
155 'button[reference=loginButton]': {
160 var sp
= Ext
.state
.Manager
.getProvider();
161 var checkboxField
= this.lookupReference('saveunField');
162 var unField
= this.lookupReference('usernameField');
164 var checked
= sp
.get(checkboxField
.getStateId());
165 checkboxField
.setValue(checked
);
167 if(checked
=== true) {
168 var username
= sp
.get(unField
.getStateId());
169 unField
.setValue(username
);
170 var pwField
= this.lookupReference('passwordField');
192 title
: gettext('Proxmox VE Login'),
194 defaultFocus
: 'usernameField',
196 defaultButton
: 'loginButton',
201 url
: '/api2/extjs/access/ticket',
202 reference
: 'loginForm',
212 fieldLabel
: gettext('User name'),
214 itemId
: 'usernameField',
215 reference
: 'usernameField',
216 stateId
: 'login-username'
220 inputType
: 'password',
221 fieldLabel
: gettext('Password'),
223 reference
: 'passwordField'
227 fieldLabel
: gettext('OTP'),
229 reference
: 'otpField',
231 emptyText
: gettext('2nd factor, if required')
234 xtype
: 'pveRealmComboBox',
238 xtype
: 'proxmoxLanguageSelector',
239 fieldLabel
: gettext('Language'),
240 value
: Ext
.util
.Cookies
.get('PVELangCookie') || Proxmox
.defaultLang
|| 'en',
242 reference
: 'langField',
249 fieldLabel
: gettext('Save User name'),
250 name
: 'saveusername',
251 reference
: 'saveunField',
252 stateId
: 'login-saveusername',
258 text
: gettext('Login'),
259 reference
: 'loginButton'