]>
git.proxmox.com Git - pmg-gui.git/blob - js/LoginView.js
1 Ext
.define('PMG.LoginView', {
2 extend
: 'Ext.container.Container',
6 xclass
: 'Ext.app.ViewController',
11 let realmfield
= me
.lookup('realmfield');
13 me
.lookup('quarantineButton').setVisible(!!Proxmox
.QuarantineLink
);
15 if (view
.targetview
!== 'quarantineview') {
19 // hide save username field for quarantine view
20 me
.lookup('saveunField').setVisible(false);
22 realmfield
.setValue('quarantine');
24 // try autologin with quarantine ticket from URL
26 let qs
= Ext
.Object
.fromQueryString(location
.search
);
27 if (qs
.ticket
=== undefined) {
30 let ticket
= decodeURIComponent(qs
.ticket
);
31 let match
= ticket
.match(/^PMGQUAR:([^\s:]+):/);
35 let username
= match
[1];
36 let loginwin
= me
.lookup('loginwindow');
37 loginwin
.autoShow
= false;
38 loginwin
.setVisible(false);
39 realmfield
.setDisabled(true);
41 me
.lookup('usernameField').setValue(username
);
42 me
.lookup('passwordField').setValue(ticket
);
47 submitForm: function() {
49 let view
= me
.getView();
50 let loginForm
= me
.lookupReference('loginForm');
51 var unField
= me
.lookupReference('usernameField');
52 var saveunField
= me
.lookupReference('saveunField');
54 if (loginForm
.isValid()) {
55 if (loginForm
.isVisible()) {
56 loginForm
.mask(gettext('Please wait...'), 'x-mask-loading');
59 // set or clear username for admin view
60 if (view
.targetview
!== 'quarantineview') {
61 var sp
= Ext
.state
.Manager
.getProvider();
62 if (saveunField
.getValue() === true) {
63 sp
.set(unField
.getStateId(), unField
.getValue());
65 sp
.clear(unField
.getStateId());
67 sp
.set(saveunField
.getStateId(), saveunField
.getValue());
71 success: function(form
, action
) {
72 // save login data and create cookie
73 PMG
.Utils
.updateLoginData(action
.result
.data
);
74 PMG
.app
.changeView(view
.targetview
);
76 failure: function(form
, action
) {
80 gettext('Login failed. Please try again'),
87 openQuarantineLinkWindow: function() {
89 me
.lookup('loginwindow').setVisible(false);
90 Ext
.create('Proxmox.window.Edit', {
91 title
: gettext('Request Quarantine Link'),
92 url
: '/quarantine/sendlink',
94 submitText
: gettext('OK'),
98 xtype
: 'proxmoxtextfield',
100 fieldLabel
: gettext('Your E-Mail'),
104 destroy: function() {
105 me
.lookup('loginwindow').show(true);
112 'field[name=lang]': {
113 change: function(f
, value
) {
114 let dt
= Ext
.Date
.add(new Date(), Ext
.Date
.YEAR
, 10);
115 Ext
.util
.Cookies
.set('PMGLangCookie', value
, dt
);
117 let loginwin
= this.lookupReference('loginwindow');
118 loginwin
.mask(gettext('Please wait...'), 'x-mask-loading');
119 window
.location
.reload();
122 'button[reference=quarantineButton]': {
123 click
: 'openQuarantineLinkWindow',
125 'button[reference=loginButton]': {
128 'window[reference=loginwindow]': {
131 let view
= me
.getView();
132 if (view
.targetview
!== 'quarantineview') {
133 var sp
= Ext
.state
.Manager
.getProvider();
134 var checkboxField
= this.lookupReference('saveunField');
135 var unField
= this.lookupReference('usernameField');
137 var checked
= sp
.get(checkboxField
.getStateId());
138 checkboxField
.setValue(checked
);
140 if (checked
=== true) {
141 var username
= sp
.get(unField
.getStateId());
142 unField
.setValue(username
);
143 var pwField
= this.lookupReference('passwordField');
170 xtype
: 'proxmoxlogo',
173 xtype
: 'versioninfo',
185 reference
: 'loginwindow',
190 defaultFocus
: 'usernameField',
196 title
: gettext('Proxmox Mail Gateway Login'),
204 defaultButton
: 'loginButton',
205 url
: '/api2/extjs/access/ticket',
206 reference
: 'loginForm',
216 fieldLabel
: gettext('User name'),
218 itemId
: 'usernameField',
219 reference
: 'usernameField',
220 stateId
: 'login-username',
224 inputType
: 'password',
225 fieldLabel
: gettext('Password'),
227 reference
: 'passwordField',
230 xtype
: 'proxmoxLanguageSelector',
231 fieldLabel
: gettext('Language'),
232 value
: Ext
.util
.Cookies
.get('PMGLangCookie') || 'en',
237 xtype
: 'hiddenfield',
238 reference
: 'realmfield',
246 fieldLabel
: gettext('Save User name'),
247 name
: 'saveusername',
248 reference
: 'saveunField',
249 stateId
: 'login-saveusername',
255 text
: gettext('Request Quarantine Link'),
256 reference
: 'quarantineButton',
259 text
: gettext('Login'),
260 reference
: 'loginButton',