forked from verdnatura/hedera-web
137 lines
2.3 KiB
JavaScript
137 lines
2.3 KiB
JavaScript
|
|
var Tpl = require ('./login.xml');
|
|
|
|
require ('./login.css');
|
|
|
|
/**
|
|
* The login component.
|
|
*/
|
|
module.exports = new Class
|
|
({
|
|
Extends: Htk.Component,
|
|
Properties:
|
|
{
|
|
/**
|
|
* The main connection object.
|
|
*/
|
|
conn:
|
|
{
|
|
type: Db.Connection
|
|
,set: function (x)
|
|
{
|
|
this.link ({_conn: x}, {'loading-changed': this._onConnLoadChange});
|
|
}
|
|
,get: function ()
|
|
{
|
|
return this._conn;
|
|
}
|
|
}
|
|
}
|
|
|
|
,initialize: function (props)
|
|
{
|
|
this.parent (props);
|
|
this.builderInitString (Tpl);
|
|
|
|
this.$('social-bar').conn = this._conn;
|
|
|
|
var self = this;
|
|
this.$('form').onsubmit = function ()
|
|
{
|
|
self._onSubmit ();
|
|
return false;
|
|
};
|
|
}
|
|
|
|
,show: function ()
|
|
{
|
|
document.body.appendChild (this.node);
|
|
|
|
var lastUser = localStorage.getItem ('hederaLastUser');
|
|
|
|
if (lastUser)
|
|
this.$('user').value = lastUser;
|
|
|
|
this._focusUserInput ();
|
|
}
|
|
|
|
,hide: function ()
|
|
{
|
|
Vn.Node.remove (this.node);
|
|
}
|
|
|
|
,_onConnLoadChange: function (conn, isLoading)
|
|
{
|
|
if (isLoading)
|
|
this.$('spinner').start ();
|
|
else
|
|
this.$('spinner').stop ();
|
|
}
|
|
|
|
,_onSubmit: function ()
|
|
{
|
|
this._conn.open (
|
|
this.$('user').value,
|
|
this.$('pass').value,
|
|
this.$('remember').checked,
|
|
this._onConnOpen.bind (this)
|
|
);
|
|
this._disableUi (true);
|
|
}
|
|
|
|
,_onConnOpen: function (conn, success, error)
|
|
{
|
|
this.$('pass').value = '';
|
|
this._disableUi (false);
|
|
|
|
if (success)
|
|
{
|
|
var user = this.$('user').value;
|
|
|
|
if (user)
|
|
localStorage.setItem ('hederaLastUser', user);
|
|
|
|
this.emit ('login');
|
|
}
|
|
else
|
|
{
|
|
this._focusUserInput ();
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
,_focusUserInput: function ()
|
|
{
|
|
var userEntry = this.$('user');
|
|
userEntry.focus ();
|
|
userEntry.select ();
|
|
}
|
|
|
|
,_disableUi: function (disabled)
|
|
{
|
|
this.$('user').disabled = disabled;
|
|
this.$('pass').disabled = disabled;
|
|
this.$('submit').disabled = disabled;
|
|
}
|
|
|
|
,onPasswordLost: function ()
|
|
{
|
|
var user = this.$('user').value;
|
|
|
|
if (!user)
|
|
Htk.Toast.showError (_('Please write your user name'));
|
|
else
|
|
this._conn.send ('core/recover-password', {recoverUser: user},
|
|
this._onPasswordRecovered.bind (this));
|
|
}
|
|
|
|
,_onPasswordRecovered: function (json, error)
|
|
{
|
|
if (error)
|
|
throw error;
|
|
|
|
Htk.Toast.showMessage (_('A mail has been sent wich you can recover your password'));
|
|
}
|
|
});
|
|
|