128 lines
4.0 KiB
JavaScript
128 lines
4.0 KiB
JavaScript
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;
|
|
});
|
|
});
|