This repository has been archived on 2025-02-26. You can view files and clone it, but cannot push or open issues or pull requests.
szurubooru/public_html/js/Presenters/LoginPresenter.js

81 lines
1.8 KiB
JavaScript
Raw Normal View History

2014-08-31 23:22:56 +02:00
var App = App || {};
App.Presenters = App.Presenters || {};
App.Presenters.LoginPresenter = function(
2014-09-08 22:02:28 +02:00
_,
2014-08-31 23:22:56 +02:00
jQuery,
2014-09-02 09:36:42 +02:00
util,
2014-09-04 18:06:25 +02:00
promise,
2014-09-04 19:06:12 +02:00
router,
auth,
topNavigationPresenter,
messagePresenter) {
2014-08-31 23:22:56 +02:00
var $el = jQuery('#content');
var $messages;
2014-09-02 09:36:42 +02:00
var template;
var previousRoute;
2014-09-02 09:36:42 +02:00
function init(args) {
topNavigationPresenter.select('login');
previousRoute = args.previousRoute;
2014-09-04 18:06:25 +02:00
promise.wait(util.promiseTemplate('login-form')).then(function(html) {
template = _.template(html);
2014-09-08 22:02:28 +02:00
if (auth.isLoggedIn()) {
finishLogin();
2014-09-08 22:02:28 +02:00
} else {
render();
2014-09-08 22:02:28 +02:00
}
});
2014-09-02 23:07:50 +02:00
}
2014-08-31 23:22:56 +02:00
function render() {
$el.html(template());
2014-09-02 23:07:50 +02:00
$el.find('form').submit(loginFormSubmitted);
2014-08-31 23:22:56 +02:00
$messages = $el.find('.messages');
$messages.width($el.find('form').width());
2014-09-08 22:02:28 +02:00
}
2014-08-31 23:22:56 +02:00
2014-09-02 23:07:50 +02:00
function loginFormSubmitted(e) {
e.preventDefault();
messagePresenter.hideMessages($messages);
var userNameOrEmail = $el.find('[name=user]').val();
2014-09-02 23:07:50 +02:00
var password = $el.find('[name=password]').val();
var remember = $el.find('[name=remember]').val();
if (userNameOrEmail.length === 0) {
messagePresenter.showError($messages, 'User name cannot be empty.');
return false;
}
2014-09-08 22:02:28 +02:00
if (password.length === 0) {
messagePresenter.showError($messages, 'Password cannot be empty.');
return false;
}
2014-09-02 23:07:50 +02:00
auth.loginFromCredentials(userNameOrEmail, password, remember)
2014-09-02 23:07:50 +02:00
.then(function(response) {
finishLogin();
2014-09-04 18:06:25 +02:00
}).fail(function(response) {
2014-09-02 23:07:50 +02:00
messagePresenter.showError($messages, response.json && response.json.error || response);
});
}
function finishLogin() {
if (previousRoute && !previousRoute.match(/logout|password-reset|activate|register/)) {
router.navigate(previousRoute);
} else {
router.navigateToMainPage();
}
}
2014-08-31 23:22:56 +02:00
return {
init: init,
2014-08-31 23:22:56 +02:00
render: render,
};
};
App.DI.register('loginPresenter', App.Presenters.LoginPresenter);