Compare commits

...
2 Commits
Author SHA1 Message Date
roman ef12aaadee Merge branch 'master' of https://gitea.nas.culak.sk/roman/CalendarReminder
Build and Push Docker Image / build-and-push (push) Successful in 2m30s
2026-06-11 22:01:51 +02:00
roman 1782d2c5ac oprava zmeny hesla 2026-06-11 22:01:31 +02:00
3 changed files with 19 additions and 9 deletions
@@ -130,7 +130,7 @@ public class AdminController : ControllerBase
<tr><td style="padding:0.4rem 0;color:#8b949e">Email</td><td style="padding:0.4rem 0;font-weight:600">{req.Email}</td></tr> <tr><td style="padding:0.4rem 0;color:#8b949e">Email</td><td style="padding:0.4rem 0;font-weight:600">{req.Email}</td></tr>
<tr><td style="padding:0.4rem 0;color:#8b949e">Heslo</td><td style="padding:0.4rem 0;font-weight:600">user</td></tr> <tr><td style="padding:0.4rem 0;color:#8b949e">Heslo</td><td style="padding:0.4rem 0;font-weight:600">user</td></tr>
</table> </table>
<p style="margin:1.25rem 0 0;color:#f85149;font-size:0.88rem"> Po prvom prihlásení si zmeň heslo cez Zabudol som heslo".</p> <p style="margin:1.25rem 0 0;color:#8b949e;font-size:0.88rem">Po prvom prihlásení ťa aplikácia vyzve na zmenu hesla.</p>
</div> </div>
<div style="padding:0.75rem 1.5rem;border-top:1px solid #30363d;font-size:0.78rem;color:#6e7681">Calendar Reminder</div> <div style="padding:0.75rem 1.5rem;border-top:1px solid #30363d;font-size:0.78rem;color:#6e7681">Calendar Reminder</div>
</div> </div>
@@ -127,6 +127,7 @@ public class AuthController : ControllerBase
} }
user.PasswordHash = BCrypt.Net.BCrypt.HashPassword(req.NewPassword); user.PasswordHash = BCrypt.Net.BCrypt.HashPassword(req.NewPassword);
user.MustChangePassword = false;
await _db.SaveChangesAsync(); await _db.SaveChangesAsync();
return Ok("Heslo bolo úspešne zmenené."); return Ok("Heslo bolo úspešne zmenené.");
+16 -7
View File
@@ -1259,18 +1259,27 @@ async function doMcpChange() {
const u = JSON.parse(localStorage.getItem('user') || '{}'); const u = JSON.parse(localStorage.getItem('user') || '{}');
if (pass.length < 6) { err.textContent = 'Heslo musí mať aspoň 6 znakov.'; return; } if (pass.length < 6) { err.textContent = 'Heslo musí mať aspoň 6 znakov.'; return; }
if (pass !== pass2) { err.textContent = 'Heslá sa nezhodujú.'; 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`, { const res = await fetch(`${API}/auth/reset-password`, {
method:'POST', headers:{'Content-Type':'application/json'}, method:'POST', headers:{'Content-Type':'application/json'},
body: JSON.stringify({ email: u.email, newPassword: pass, code: null }) body: JSON.stringify({ email: u.email, newPassword: pass, code: null })
}); });
if (res.ok) { if (!res.ok) { err.textContent = await res.text(); return; }
// Update stored user to clear mustChangePassword flag
u.mustChangePassword = false; // 2. Znovu prihlásiť — dostaneme nový token s mustChangePassword: false
localStorage.setItem('user', JSON.stringify(u)); const loginRes = await fetch(`${API}/auth/login`, {
document.getElementById('mcp-modal').classList.remove('open'); method:'POST', headers:{'Content-Type':'application/json'},
} else { body: JSON.stringify({ email: u.email, password: pass })
err.textContent = await res.text(); });
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 ═══ // ═══ ADMIN PANEL ═══