(() => { function getCookie(name) { const cookieName = `${name}=`; const decodedCookie = decodeURIComponent(document.cookie); const cookieArray = decodedCookie.split(';'); for(let i = 0; i < cookieArray.length; i++) { let cookie = cookieArray[i]; while (cookie.charAt(0) === ' ') { cookie = cookie.substring(1); } if (cookie.indexOf(cookieName) === 0) { return cookie.substring(cookieName.length, cookie.length); } } return null; } function shortenSchoolName(name) { if (!name) return ''; const maxLength = 30; if (name.length <= maxLength) return name; const parts = name.split(' - '); if (parts.length === 2) { const [code, fullName] = parts; return `${code} - ${fullName.substring(0, maxLength - code.length - 5)}...`; } return name.substring(0, maxLength - 3) + '...'; } function createSecurityTab() { return `

1. lépés: Hitelesítési alkalmazás telepítése

A kétfaktoros hitelesítés használatához telepítsen egy időalapú, egyszer használatos jelszó (TOTP) alkalmazást:

2. lépés: Kétfaktoros azonosítás beállítása

`; } function createContactTab() { return `
Az e-mail cím megadása a jelszó emlékeztető miatt szükséges.
A telefonszám megadása nem kötelező.
`; } function createPasswordTab() { return `
A jelszónak legalább 8 karakter hosszúnak kell lennie.
`; } function createSettingsTab() { return `
A tippek megjelenítésének ki/be kapcsolása.
`; } function setupContactForm() { const form = document.querySelector('.contact-form'); if (!form) return; const emailInput = form.querySelector('#email'); const phoneInput = form.querySelector('#phone'); const saveButton = form.querySelector('#saveContacts'); emailInput.value = getCookie('userEmail') || ''; phoneInput.value = getCookie('userPhone') || ''; saveButton?.addEventListener('click', async () => { const email = emailInput.value.trim(); const phone = phoneInput.value.trim(); if (!email) { alert('Az e-mail cím megadása kötelező!'); return; } if (email && !isValidEmail(email)) { alert('Kérjük, adjon meg egy érvényes e-mail címet!'); return; } if (phone && !isValidPhone(phone)) { alert('Kérjük, adjon meg egy érvényes telefonszámot!'); return; } try { const response = await fetch('/Adminisztracio/Profil/SaveElerhetosegek', { method: 'POST', headers: { 'Content-Type': 'application/json', 'RequestVerificationToken': document.querySelector('input[name="__RequestVerificationToken"]').value }, body: JSON.stringify({ email, phone }) }); if (response.ok) { alert('Elérhetőségek sikeresen mentve!'); } else { throw new Error('Hiba történt a mentés során.'); } } catch (error) { console.error('Error saving contacts:', error); alert('Hiba történt a mentés során. Kérjük, próbálja újra később.'); } }); } function isValidEmail(email) { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); } function isValidPhone(phone) { return /^\+?[0-9\s-]{9,}$/.test(phone); } function setupEventListeners() { document.querySelectorAll('.tab-header').forEach(header => { header.addEventListener('click', () => { document.querySelectorAll('.tab-header').forEach(h => h.classList.remove('active')); document.querySelectorAll('.tab-content').forEach(c => c.classList.remove('active')); header.classList.add('active'); const targetId = header.dataset.tab; document.getElementById(`${targetId}-content`).classList.add('active'); }); }); const userBtn = document.querySelector('.user-dropdown-btn'); const userDropdown = document.querySelector('.user-dropdown'); userBtn?.addEventListener('click', (e) => { e.stopPropagation(); userDropdown?.classList.toggle('show'); }); document.addEventListener('click', () => { userDropdown?.classList.remove('show'); }); document.getElementById('saveSettings')?.addEventListener('click', async () => { const hideTips = document.getElementById('hideTips').checked; try { const response = await fetch('/Adminisztracio/Profil/SaveTippekBeallitasa', { method: 'POST', headers: { 'Content-Type': 'application/json', 'RequestVerificationToken': document.querySelector('input[name="__RequestVerificationToken"]').value }, body: JSON.stringify({ hideTips }) }); if (response.ok) { alert('Beállítások sikeresen mentve! A változtatások érvényesítéséhez jelentkezzen be újra.'); } else { throw new Error('Hiba történt a mentés során.'); } } catch (error) { console.error('Error saving settings:', error); alert('Hiba történt a mentés során. Kérjük, próbálja újra később.'); } }); document.getElementById('savePassword')?.addEventListener('click', async () => { const currentPassword = document.getElementById('currentPassword').value; const newPassword = document.getElementById('newPassword').value; const confirmPassword = document.getElementById('confirmPassword').value; if (!currentPassword || !newPassword || !confirmPassword) { alert('Kérjük, töltse ki az összes mezőt!'); return; } if (newPassword !== confirmPassword) { alert('Az új jelszavak nem egyeznek!'); return; } if (newPassword.length < 8) { alert('Az új jelszónak legalább 8 karakter hosszúnak kell lennie!'); return; } try { const response = await fetch('/Adminisztracio/Profil/SaveJelszoModositas', { method: 'POST', headers: { 'Content-Type': 'application/json', 'RequestVerificationToken': document.querySelector('input[name="__RequestVerificationToken"]').value }, body: JSON.stringify({ currentPassword, newPassword, confirmPassword }) }); if (response.ok) { alert('Jelszó sikeresen módosítva!'); document.getElementById('currentPassword').value = ''; document.getElementById('newPassword').value = ''; document.getElementById('confirmPassword').value = ''; } else { throw new Error('Hiba történt a jelszó módosítása során.'); } } catch (error) { console.error('Error changing password:', error); alert('Hiba történt a jelszó módosítása során. Kérjük, próbálja újra később.'); } }); const timerEl = document.getElementById('logoutTimer'); if (timerEl) { const startTime = parseInt(timerEl.textContent?.match(/\d+/)?.[0] || "45"); let timeLeft = startTime * 60; const updateTimer = () => { const minutes = Math.floor(timeLeft / 60); const seconds = timeLeft % 60; timerEl.textContent = `${minutes}:${seconds.toString().padStart(2, '0')}`; if (timeLeft <= 0) { window.location.href = '/Home/Logout'; } else { timeLeft--; } }; updateTimer(); setInterval(updateTimer, 1000); } } function createProfileHTML(data) { const schoolNameFull = `${data.schoolInfo.id} - ${data.schoolInfo.name}`; const shortenedSchoolName = shortenSchoolName(schoolNameFull); return `

Firka

${shortenedSchoolName}

Profil beállítások

${createSettingsTab()}
${createPasswordTab()}
${createSecurityTab()}
${createContactTab()}
`; } async function init() { if (window.location.pathname.includes('/Adminisztracio/Profil')) { const links = [ { rel: 'preconnect', href: 'https://fonts.googleapis.com' }, { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: true }, { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap' }, { rel: 'stylesheet', href: 'https://fonts.googleapis.com/icon?family=Material+Icons+Round' } ]; links.forEach(link => { const linkElement = document.createElement('link'); Object.entries(link).forEach(([key, value]) => { linkElement[key] = value; }); document.head.appendChild(linkElement); }); const userData = { schoolInfo: { name: getCookie('schoolName') || 'Iskola', id: getCookie('schoolCode') || '' }, userData: { name: getCookie('userName') || 'Felhasználó', time: document.querySelector('.usermenu_timer')?.textContent?.trim() || '45:00', email: getCookie('userEmail') || '' } }; document.body.innerHTML = createProfileHTML(userData); setupEventListeners(); setupContactForm(); } } init(); })();