diff --git a/themes/luci-theme-bootstrap/htdocs/luci-static/resources/view/bootstrap/sysauth.js b/themes/luci-theme-bootstrap/htdocs/luci-static/resources/view/bootstrap/sysauth.js index 344b043a36..fd936c9b10 100644 --- a/themes/luci-theme-bootstrap/htdocs/luci-static/resources/view/bootstrap/sysauth.js +++ b/themes/luci-theme-bootstrap/htdocs/luci-static/resources/view/bootstrap/sysauth.js @@ -1,98 +1,33 @@ 'use strict'; 'require ui'; -'require dom'; -'require form'; 'require view'; -'require request'; - -var data = { login: {} }; return view.extend({ - load: function() { - var m, s, o; + render: function() { + var form = document.querySelector('form'), + btn = document.querySelector('button'); - m = new form.JSONMap(data); - s = m.section(form.NamedSection, 'login'); + var dlg = ui.showModal( + _('Authorization Required'), + [].slice.call(document.querySelectorAll('section > *')), + 'login' + ); - o = s.option(form.Value, 'username', _('Username')); - o.default = L.env.default_login_user; - - o = s.option(form.Value, 'password', _('Password')); - o.password = true; - o.validate = function(section_id, value) { - var msg = document.querySelector('alert-message'); - - if (msg && value.length) - msg.parentNode.removeChild(msg); - - return true; - }; - - return m.render(); - }, - - render: function(form) { - ui.showModal(_('Authorization Required'), [ - form, - E('hr'), - E('div', { 'class': 'alert-message error hidden' }, [ - _('Invalid username and/or password! Please try again.') - ]), - E('button', { - 'class': 'btn cbi-button-positive important', - 'click': ui.createHandlerFn(this, 'handleLogin', form) - }, [ _('Login') ]) - ], 'login'); - - document.querySelector('[id="widget.cbid.json.login.password"]').focus(); - - form.addEventListener('keyup', L.bind(function(form, ev) { - if (ev.key === 'Enter' || ev.keyCode === 13) - document.querySelector('.cbi-button-positive.important').click(); - }, this, form)); - - return E('div', { 'class': 'spinning' }, _('Loading view…')); - }, - - handleLoginError: function(err) { - document.querySelectorAll('.alert-message.error').forEach(function(msg) { - msg.firstChild.data = _('The login request failed with error: %h').format(err.message); - msg.classList.remove('hidden'); - msg.classList.add('flash'); - }); - }, - - handleLoginReply: function(res) { - if (res.status != 403) { - ui.hideModal(); - location.reload(); - - return; - } - - document.querySelectorAll('.alert-message.error').forEach(function(msg) { - msg.firstChild.data = _('Invalid username and/or password! Please try again.'); - msg.classList.remove('hidden'); - msg.classList.add('flash'); - }); - }, - - handleLogin: function(form, ev) { - var fd = new FormData(); - - document.querySelectorAll('.alert-message.error').forEach(function(msg) { - msg.classList.add('hidden'); - msg.classList.remove('flash'); + form.addEventListener('keypress', function(ev) { + if (ev.key == 'Enter') + btn.click(); }); - dom.callClassMethod(form, 'save'); + btn.addEventListener('click', function() { + dlg.querySelectorAll('*').forEach(function(node) { node.style.display = 'none' }); + dlg.appendChild(E('div', { 'class': 'spinning' }, _('Logging in…'))); - fd.append('luci_username', data.login.username != null ? data.login.username : ''); - fd.append('luci_password', data.login.password != null ? data.login.password : ''); + form.submit() + }); - Object.getPrototypeOf(L).notifySessionExpiry = function() {}; + document.querySelector('input[type="password"]').focus(); - return request.post(location.href, fd).then(this.handleLoginReply, this.handleLoginError); + return ''; }, addFooter: function() {} diff --git a/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/sysauth.htm b/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/sysauth.htm index 2427199bf5..b5413ed36e 100644 --- a/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/sysauth.htm +++ b/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/sysauth.htm @@ -10,11 +10,40 @@ <%+header%> + +
<%:Loading view…%>