0
1
Fork 0
hedera-web-mindshore/js/hedera/login.js

112 lines
2.2 KiB
JavaScript

var Tpl = require('./login.xml').default;
require('./login.scss');
module.exports = new Class({
Extends: Vn.Component,
Properties: {
conn: {
type: Db.Connection
,set(x) {
this.link({_conn: x}, {'loading-changed': this._onConnLoadChange});
}
,get() {
return this._conn;
}
}
}
,initialize(props) {
Vn.Component.prototype.initialize.call(this, props);
this.loadTemplateFromString(Tpl);
//this.$.socialBar.conn = this._conn;
var self = this;
this.$.form.onsubmit = function() {
self._onSubmit();
return false;
};
if(this.hash.$.verificationToken){
this.$.changePassword.conn = this.conn;
this.$.changePassword.token = this.hash.$.verificationToken;
this.$.changePassword.open();
}
}
,_onConnLoadChange(conn, isLoading) {
if (isLoading)
this.$.spinner.start();
else
this.$.spinner.stop();
}
,show() {
document.body.appendChild(this.node);
var lastUser = localStorage.getItem('hederaLastUser');
if (lastUser)
this.$.user.value = lastUser;
this._focusUserInput();
}
,async _onSubmit() {
this._disableUi(true);
try {
await this._conn.open(
this.$.user.value,
this.$.pass.value,
this.$.remember.checked
);
const user = this.$.user.value;
if (user) localStorage.setItem('hederaLastUser', user);
this.emit('login');
} catch (err) {
this._focusUserInput();
if (err.statusCode == 401)
Htk.Toast.showError(_('Invalid login'));
else
throw err;
} finally {
this.$.pass.value = '';
this._disableUi(false);
}
}
,hide() {
Vn.Node.remove(this.node);
}
,_focusUserInput() {
var userEntry = this.$.user;
userEntry.focus();
userEntry.select();
}
,_disableUi(disabled) {
this.$.user.disabled = disabled;
this.$.pass.disabled = disabled;
this.$.submit.disabled = disabled;
}
,async onPasswordLost() {
var recoverUser = this.$.user.value;
if (!recoverUser) {
Htk.Toast.showError(_('Please write your user name'));
return;
}
await this.conn.post('VnUsers/recoverPassword', {
user: recoverUser,
app: 'hedera'
});
Htk.Toast.showMessage(_('A mail has been sent wich you can recover your password'));
}
});