import { loadPageTexts, getPageText } from '../i18n/main.js'; import { hide_login_page, hide_signup_page, show_startpage, show_home } from '../main/main.js'; import { validatePasswordSecurity, countOccurrences, jCloudUIElements } from '../tools/main.js'; import { more_options_menu_hide } from '../nav/menus/moreoptions/main.js'; const submit_email = function () { const email = document.querySelector('#email'); const passwordContainer = document.querySelector('#password-container'); const password = document.querySelector('#password'); if (email.value.length > 0) { email.style.borderBottomLeftRadius = '0'; email.style.borderBottomRightRadius = '0'; password.style.borderTopLeftRadius = '0'; password.style.borderTopRightRadius = '0'; password.classList.add('show'); passwordContainer.style.display = 'block'; setTimeout(() => { passwordContainer.classList.add('show'); }, 10); }; email.addEventListener('input', function () { if (email.value.length === 0) { setTimeout(() => { passwordContainer.classList.remove('show'); }, 10); email.style.borderBottomLeftRadius = '10px'; email.style.borderBottomRightRadius = '10px'; password.style.borderTopLeftRadius = '10px'; password.style.borderTopRightRadius = '10px'; password.classList.remove('show'); passwordContainer.style.display = 'none'; }; }); }; const check_password = async function () { const email = document.querySelector('#email').value; const password = document.querySelector('#password').value; document.querySelector('#loading').style.display = 'flex'; const error = document.querySelector('#login-error'); const params = new URLSearchParams(); params.append('e', email); params.append('p', password); params.append('s', document.querySelector('#login-options-stay').checked ? 'true' : 'false') await fetch('https://jcloud-services.ddns.net:1024/get-token', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: params.toString(), credentials: 'include' }) .then(async response => { if (response.status === 200) { const token = await response.text(); document.cookie = `signed_in=true; path=/; ${document.querySelector('#login-options-stay').checked ? 'Max-Age=1728000' : ''}; Secure; SameSite=strict`; document.querySelector('#authorized-mom-part').style.display = 'block'; hide_login_page(); show_home(); } else if (response.status === 401) { error.textContent = await getPageText('/login', '0a3277611792429cbdbea27f8238b2e9', '0'); error.classList.remove('hidden'); } else if (response.status === 404) { error.textContent = await getPageText('/login', '6f7684f96cfe47e3ad01c1f566de5f53', '0'); error.classList.remove('hidden'); }; }) .catch(async err => { await jCloudUIElements.alert(err) }); document.querySelector('#loading').style.display = 'none'; }; const createUser = async function () { const error = document.querySelector('#signup-error'); const email = document.querySelector('#signup-email').value; const password = document.querySelector('#signup-password').value; const passwordConfirmation = document.querySelector('#signup-password-confirm').value; const firstName = document.querySelector('#signup-first-name').value; const lastName = document.querySelector('#signup-last-name').value; const language = document.querySelector('#signup-language').value; const birthDate = new Date(document.querySelector('#signup-birth-date').value); const age = Math.floor((new Date() - birthDate) / (1000 * 60 * 60 * 24)); const preInstalledApplications = document.querySelector('#signup-pre-installed-applications').value; const preInstalledApplicationsInstallingLocations = document.querySelector('#signup-pre-installed-applications-installing-locations').value; if (email && password && passwordConfirmation && firstName && lastName && language && birthDate && preInstalledApplications && preInstalledApplicationsInstallingLocations) { if (age >= 4745) { if (email.length > 0 && countOccurrences(email, '@') === 1) { if (password === passwordConfirmation) { if (validatePasswordSecurity(password)) { let params = new URLSearchParams(); params.append('p', password); params.append('fn', firstName); params.append('ln', lastName); params.append('lang', language); params.append('by', birthDate.getFullYear()); params.append('bm', birthDate.getMonth() + 1); params.append('bd', birthDate.getDate()); params.append('pia', preInstalledApplications); params.append('il', preInstalledApplicationsInstallingLocations); await fetch(`https://jcloud-services.ddns.net:1024/user/${email}`, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body: params.toString() }) .then(async response => { if (response.status === 202) { await jCloudUIElements.alert('Das Konto wurde erfolgreich erstellt.'); params = new URLSearchParams(); params.append('e', email); params.append('p', password); params.append('s', 'false'); await fetch('https://jcloud-services.ddns.net:1024/session', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: params.toString(), credentials: 'include' }) .then(async response => { if (response.status === 200) { document.cookie = `User=${email}; path=/; Max-Age=1728000; Secure; Samesite=strict`; document.cookie = 'signed_in=true; path=/; Max-Age=1728000; Secure; Samesite=strict'; window.location.href = '/'; // hide_signup_page(); // show_home(); // document.querySelector('#authorized-mom-part').style.display = 'block'; }; }) .catch(async err => { await jCloudUIElements.alert(err); }); } else if (response.status === 409) { error.innerHTML = await getPageText('/signup', 'e730f1e7a56a49e383ab4dc25d85072f', '0'); } else if (response.status === 500) { error.innerHTML = error.innerHTML = await getPageText('/signup', '9094396415c14bfeb09dc3de40c74936', '0'); }; }) .catch(async err => { await jCloudUIElements.alert(err) }); } else { error.innerHTML = await getPageText('/signup', '676e5f3ada1b40488aa841ae380d6fa3', '0'); }; } else { error.innerHTML = await getPageText('/signup', '7d6499350697401c8ea2f7ca60d0c474', '1'); }; } else { error.innerHTML = await getPageText('/signup', '2c04ed45a2d04b42916f5d23ee63e7c1', '0'); }; } else { error.innerHTML = await getPageText('/signup', '2bc37506b1024fe196a6aea65406b83f', '0'); }; } else { error.innerHTML = await getPageText('/signup', 'a827a1ffb86e4f0786e951abe4a54ab3', '0'); }; }; const signupPage1 = function () { const page1 = document.querySelector('#signup-form-page-1'); const page2 = document.querySelector('#signup-form-page-2'); page1.classList.remove('hidden'); page2.classList.add('hidden'); }; const signupPage2 = function () { const page1 = document.querySelector('#signup-form-page-1'); const page2 = document.querySelector('#signup-form-page-2'); const page3 = document.querySelector('#signup-form-page-3'); page1.classList.add('hidden'); page2.classList.remove('hidden'); page3.classList.add('hidden'); }; const signupPage3 = function () { const page2 = document.querySelector('#signup-form-page-2'); const page3 = document.querySelector('#signup-form-page-3'); page2.classList.add('hidden'); page3.classList.remove('hidden'); }; const signOut = async function () { await fetch('https://jcloud-services.ddns.net:1024/session', { method: 'DELETE', credentials: 'include' } ) .then(async response => { if (response.status === 204) { document.cookie = "User=; path=/; max-age=-1"; document.cookie = "signed_in=; path=/; max-age=-1"; more_options_menu_hide(); show_startpage(); document.querySelector('#authorized-mom-part').style.display = 'none'; history.pushState(null, '', '/'); await loadPageTexts('/'); document.querySelector('#files').setAttribute('class', 'hidden'); document.querySelector('#home').setAttribute('class', 'hidden'); document.querySelector('#link-home').style.display = 'none'; document.querySelector('#user-details-on-footer').style.display = 'none'; document.querySelector('#user-details-on-footer').setAttribute('class', ''); window.scroll(0, 0); } else { await jCloudUIElements.alert('Aufgrund eines unbekannten Fehlers ist eine Abmeldung derzeit nicht möglich. Bitte versuchen Sie es später erneut.'); } }) .catch(async _ => { await jCloudUIElements.alert('Aufgrund eines Netzwerkfehlers ist eine Abmeldung derzeit nicht möglich. Bitte versuchen Sie es später erneut.'); }) }; export { submit_email, check_password, createUser, signupPage1, signupPage2, signupPage3, signOut };