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">Heslo</td><td style="padding:0.4rem 0;font-weight:600">user</td></tr>
</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 style="padding:0.75rem 1.5rem;border-top:1px solid #30363d;font-size:0.78rem;color:#6e7681">Calendar Reminder</div>
</div>
@@ -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é.");
+16 -7
View File
@@ -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 ═══