From 1782d2c5ac777832e15019d7ee12b604e689e54c Mon Sep 17 00:00:00 2001 From: roman Date: Thu, 11 Jun 2026 22:01:31 +0200 Subject: [PATCH] oprava zmeny hesla --- .../Controllers/AdminController.cs | 2 +- .../Controllers/AuthController.cs | 3 ++- CalendarReminder.Api/wwwroot/index.html | 23 +++++++++++++------ 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/CalendarReminder.Api/Controllers/AdminController.cs b/CalendarReminder.Api/Controllers/AdminController.cs index 58fe469..35e72b7 100644 --- a/CalendarReminder.Api/Controllers/AdminController.cs +++ b/CalendarReminder.Api/Controllers/AdminController.cs @@ -130,7 +130,7 @@ public class AdminController : ControllerBase Email{req.Email} Heslouser -

⚠️ Po prvom prihlásení si zmeň heslo cez „Zabudol som heslo".

+

Po prvom prihlásení ťa aplikácia vyzve na zmenu hesla.

Calendar Reminder
diff --git a/CalendarReminder.Api/Controllers/AuthController.cs b/CalendarReminder.Api/Controllers/AuthController.cs index cf5bd61..096f769 100644 --- a/CalendarReminder.Api/Controllers/AuthController.cs +++ b/CalendarReminder.Api/Controllers/AuthController.cs @@ -126,7 +126,8 @@ public class AuthController : ControllerBase resetToken.Used = true; } - user.PasswordHash = BCrypt.Net.BCrypt.HashPassword(req.NewPassword); + user.PasswordHash = BCrypt.Net.BCrypt.HashPassword(req.NewPassword); + user.MustChangePassword = false; await _db.SaveChangesAsync(); return Ok("Heslo bolo úspešne zmenené."); diff --git a/CalendarReminder.Api/wwwroot/index.html b/CalendarReminder.Api/wwwroot/index.html index c50dcca..2bfd386 100644 --- a/CalendarReminder.Api/wwwroot/index.html +++ b/CalendarReminder.Api/wwwroot/index.html @@ -1259,18 +1259,27 @@ async function doMcpChange() { const u = JSON.parse(localStorage.getItem('user') || '{}'); if (pass.length < 6) { err.textContent = 'Heslo musí mať aspoň 6 znakov.'; return; } if (pass !== pass2) { err.textContent = 'Heslá sa nezhodujú.'; return; } + + // 1. Zmeniť heslo — server zároveň nastaví MustChangePassword = false const res = await fetch(`${API}/auth/reset-password`, { method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify({ email: u.email, newPassword: pass, code: null }) }); - if (res.ok) { - // Update stored user to clear mustChangePassword flag - u.mustChangePassword = false; - localStorage.setItem('user', JSON.stringify(u)); - document.getElementById('mcp-modal').classList.remove('open'); - } else { - err.textContent = await res.text(); + if (!res.ok) { err.textContent = await res.text(); return; } + + // 2. Znovu prihlásiť — dostaneme nový token s mustChangePassword: false + const loginRes = await fetch(`${API}/auth/login`, { + method:'POST', headers:{'Content-Type':'application/json'}, + body: JSON.stringify({ email: u.email, password: pass }) + }); + if (loginRes.ok) { + const d = await loginRes.json(); + saveAuth(d); + // Aktualizuj meno/avatar v topbare (zostáva rovnaké, ale token je nový) + document.getElementById('hdr-user').textContent = d.username; + document.getElementById('hdr-avatar').textContent = d.username ? d.username[0].toUpperCase() : '?'; } + document.getElementById('mcp-modal').classList.remove('open'); } // ═══ ADMIN PANEL ═══