]>
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
.NeedTFA
)) {
41 // Store first factor login information first:
42 data
.LoggedOut
= true;
43 Proxmox
.Utils
.setAuthData(data
);
45 if (Ext
.isDefined(data
.U2FChallenge
)) {
57 failure: function(resp
) {
59 var view
= me
.getView();
61 var handler = function() {
62 var uf
= me
.lookupReference('usernameField');
66 Ext
.MessageBox
.alert(gettext('Error'),
67 gettext("Login failed. Please try again"),
70 success: function(data
) {
72 var view
= me
.getView();
73 var handler
= view
.handler
|| Ext
.emptyFn
;
74 handler
.call(me
, data
);
78 perform_otp: function() {
80 var win
= Ext
.create('PVE.window.TFALoginWindow', {
81 onLogin: function(value
) {
84 onCancel: function() {
85 Proxmox
.LoggedOut
= false;
86 Proxmox
.Utils
.authClear();
93 perform_u2f: function(data
) {
96 var msg
= Ext
.Msg
.show({
97 title
: 'U2F: '+gettext('Verification'),
98 message
: gettext('Please press the button on your U2F Device'),
101 var chlg
= data
.U2FChallenge
;
103 version
: chlg
.version
,
104 keyHandle
: chlg
.keyHandle
106 u2f
.sign(chlg
.appId
, chlg
.challenge
, [key
], function(res
) {
109 Proxmox
.Utils
.authClear();
110 Ext
.Msg
.alert(gettext('Error'), PVE
.Utils
.render_u2f_error(res
.errorCode
));
113 delete res
.errorCode
;
114 me
.finish_tfa(JSON
.stringify(res
));
117 finish_tfa: function(res
) {
119 var view
= me
.getView();
120 view
.el
.mask(gettext('Please wait...'), 'x-mask-loading');
121 var params
= { response
: res
};
122 Proxmox
.Utils
.API2Request({
123 url
: '/api2/extjs/access/tfa',
126 timeout
: 5000, // it'll delay both success & failure
127 success: function(resp
, opts
) {
129 // Fill in what we copy over from the 1st factor:
130 var data
= resp
.result
.data
;
131 data
.CSRFPreventionToken
= Proxmox
.CSRFPreventionToken
;
132 data
.username
= Proxmox
.UserName
;
133 // Finish logging in:
136 failure: function(resp
, opts
) {
137 Proxmox
.Utils
.authClear();
144 'field[name=username]': {
145 specialkey: function(f
, e
) {
146 if (e
.getKey() === e
.ENTER
) {
147 var pf
= this.lookupReference('passwordField');
148 if (!pf
.getValue()) {
154 'field[name=lang]': {
155 change: function(f
, value
) {
156 var dt
= Ext
.Date
.add(new Date(), Ext
.Date
.YEAR
, 10);
157 Ext
.util
.Cookies
.set('PVELangCookie', value
, dt
);
158 this.getView().mask(gettext('Please wait...'), 'x-mask-loading');
159 window
.location
.reload();
162 'button[reference=loginButton]': {
167 var sp
= Ext
.state
.Manager
.getProvider();
168 var checkboxField
= this.lookupReference('saveunField');
169 var unField
= this.lookupReference('usernameField');
171 var checked
= sp
.get(checkboxField
.getStateId());
172 checkboxField
.setValue(checked
);
174 if(checked
=== true) {
175 var username
= sp
.get(unField
.getStateId());
176 unField
.setValue(username
);
177 var pwField
= this.lookupReference('passwordField');
199 title
: gettext('Proxmox VE Login'),
201 defaultFocus
: 'usernameField',
203 defaultButton
: 'loginButton',
208 url
: '/api2/extjs/access/ticket',
209 reference
: 'loginForm',
219 fieldLabel
: gettext('User name'),
221 itemId
: 'usernameField',
222 reference
: 'usernameField',
223 stateId
: 'login-username'
227 inputType
: 'password',
228 fieldLabel
: gettext('Password'),
230 reference
: 'passwordField'
233 xtype
: 'pveRealmComboBox',
237 xtype
: 'proxmoxLanguageSelector',
238 fieldLabel
: gettext('Language'),
239 value
: Ext
.util
.Cookies
.get('PVELangCookie') || Proxmox
.defaultLang
|| 'en',
241 reference
: 'langField',
248 fieldLabel
: gettext('Save User name'),
249 name
: 'saveusername',
250 reference
: 'saveunField',
251 stateId
: 'login-saveusername',
257 text
: gettext('Login'),
258 reference
: 'loginButton'
263 Ext
.define('PVE.window.TFALoginWindow', {
264 extend
: 'Ext.window.Window',
268 title
: 'Two-Factor Authentication',
270 defaultButton
: 'loginButton',
271 defaultFocus
: 'otpField',
274 xclass
: 'Ext.app.ViewController',
277 var view
= me
.getView();
278 view
.onLogin(me
.lookup('otpField').value
);
283 var view
= me
.getView();
292 fieldLabel
: gettext('Please enter your OTP verification code:'),
295 reference
: 'otpField',
302 text
: gettext('Login'),
303 reference
: 'loginButton',
307 text
: gettext('Cancel'),