var Login = { domain: '@movim.eu', submitted: false, init: function () { // The form submission event document.body.addEventListener('submit', function (e) { e.preventDefault(); Login.submitted = true; // We register the socket MovimWebsocket.connection.register(this.querySelector('input#username').value.replace(/.*@/, '')); var button = this.querySelector('input[type=submit]'); button.value = button.dataset.loading; localStorage.username = document.querySelector('input#username').value; // A fallback security setTimeout('MovimWebsocket.unregister()', 20000); return true; }, false); }, setCookie: function (value, expires) { document.cookie = 'MOVIM_SESSION_ID' + '=' + value + '; expires=' + expires + '; path=/ ; secure; SameSite=lax'; }, getCookie: function () { cookie = document.cookie.split('='); if (cookie[0] == 'MOVIM_SESSION_ID') { return cookie[1].substring(0, 32); } return null; }, setQuick: function (deviceId, login, host, key) { localStorage.setItem('quickDeviceId', deviceId); localStorage.setItem('quickLogin', login); localStorage.setItem('quickHost', host); localStorage.setItem('quickKey', key); }, clearQuick: function () { localStorage.removeItem('quickDeviceId'); localStorage.removeItem('quickLogin'); localStorage.removeItem('quickHost'); localStorage.removeItem('quickKey'); }, isQuick: function () { return localStorage.getItem('quickDeviceId') != null && localStorage.getItem('quickLogin') != null && localStorage.getItem('quickHost') != null && localStorage.getItem('quickKey') != null; }, quickLogin: function () { if (Login.isQuick()) { Login_ajaxQuickLogin( localStorage.getItem('quickDeviceId'), localStorage.getItem('quickLogin'), localStorage.getItem('quickKey'), Intl.DateTimeFormat().resolvedOptions().timeZone, Login.getCookie(), true, // check is we can actually quick login before registering ); } }, quickLoginRegister: function () { MovimWebsocket.connection.register(localStorage.getItem('quickHost')); } } // The session linker is launched MovimWebsocket.start(function () { Login.quickLogin(); Login.init(); // We enable the form var inputs = document.querySelectorAll('#login_widget div input[disabled]'); for (var i = 0; i < inputs.length; i++) { inputs[i].disabled = false; } }); MovimWebsocket.register(function () { if (Login.isQuick()) { Login_ajaxQuickLogin( localStorage.getItem('quickDeviceId'), localStorage.getItem('quickLogin'), localStorage.getItem('quickKey'), Intl.DateTimeFormat().resolvedOptions().timeZone, Login.getCookie() ); } else { form = document.querySelector('form[name="login"]'); if (Login.submitted && Login.getCookie()) { Login_ajaxLogin(MovimUtils.formToJson('login'), Login.getCookie(), Intl.DateTimeFormat().resolvedOptions().timeZone); } } }); MovimEvents.registerWindow('loaded', 'login', () => { // We had the autocomplete system var login = document.querySelector('input#username'); login.addEventListener('input', function () { if (this.value.indexOf('@') == -1) { document.querySelector('input#complete').value = this.value + '@' + Login.domain; } else { document.querySelector('input#complete').value = this.value; } if (this.value.length == 0) { document.querySelector('input#complete').value = ''; } }); login.addEventListener('blur', function () { this.value = document.querySelector('input#complete').value; }); });