class LoginScreen extends Component {
constructor(config = {}) {
config.tpl = `

Proxmox Mail Gateway
`;
super(config);
var me = this;
me._screen = app.loginScreen.create({
content: me.getEl(),
});
let login = config.loginInfo;
me._form = me.getEl().find('form');
if (login.username && login.ticket) {
app.form.fillFromData(me._form, {
username: login.username,
password: login.ticket,
});
me._autoLogin = true;
} else if (PMG.Utils.authOK()) {
app.form.fillFromData(me._form, {
username: Proxmox.UserName,
password: decodeURIComponent(PMG.Utils.getCookie('PMGAuthCookie')),
});
me._autoLogin = true;
}
}
open(onLogin) {
var me = this;
return new Promise(function(resolve, reject) {
me._form.on('formajax:beforesend', (el, data, xhr) => {
me.loader = app.dialog.preloader();
});
me._form.on('formajax:success', (el, data, xhr) => {
let json;
try {
json = JSON.parse(xhr.responseText);
} catch (err) {
xhr.error = err;
PMG.Utils.showError(xhr);
return;
}
resolve(json);
});
me._form.on('formajax:error', (el, data, xhr) => {
me.loader.close();
PMG.Utils.showError(xhr);
});
if (me._autoLogin) {
delete me._autoLogin;
me._screen.on('open', () => {
me._form.trigger('submit');
})
}
me._screen.open();
});
}
close() {
var me = this;
if (me.loader) {
me.loader.close();
}
me._screen.close(false);
}
}