const { request } = require('./httpClient.cjs'); // Kapselt /api/auth/* von omsorgCore. Kennt die Feldnamen der LoginResponse // (camelCase, da ASP.NET Core standardmäßig camelCase-JSON ausgibt). function toTokenPair(data) { return { accessToken: data.accessToken, refreshToken: data.refreshToken, expiresAt: data.expiresAt, mustChangePassword: !!data.mustChangePassword }; } async function login(username, password) { const result = await request('POST', '/api/auth/login', { body: { username, password } }); if (!result.ok) { return { ok: false, status: result.status, error: result.error || result.data?.error }; } return { ok: true, ...toTokenPair(result.data) }; } async function refresh(refreshToken) { const result = await request('POST', '/api/auth/refresh', { body: { refreshToken } }); if (!result.ok) return { ok: false, status: result.status }; return { ok: true, ...toTokenPair(result.data) }; } async function logout(refreshToken) { const result = await request('POST', '/api/auth/logout', { body: { refreshToken } }); return { ok: result.ok, status: result.status }; } async function me(accessToken) { const result = await request('GET', '/api/auth/me', { accessToken }); if (!result.ok) return { ok: false, status: result.status }; return { ok: true, username: result.data.username, role: result.data.role, permissions: result.data.permissions }; } async function requestPasswordReset(username) { const result = await request('POST', '/api/auth/forgot-password/request', { body: { username } }); if (!result.ok) return { ok: false, status: result.status }; return { ok: true, status: result.data.status }; } async function verifyPasswordResetCode(username, pin) { const result = await request('POST', '/api/auth/forgot-password/verify', { body: { username, pin } }); if (!result.ok) return { ok: false, status: result.status, error: result.data?.error }; return { ok: true, resetToken: result.data.resetToken }; } async function resetPassword(resetToken, newPassword) { const result = await request('POST', '/api/auth/forgot-password/reset', { body: { resetToken, newPassword } }); return { ok: result.ok, status: result.status }; } async function changePassword(accessToken, currentPassword, newPassword) { const result = await request('POST', '/api/auth/change-password', { body: { currentPassword, newPassword }, accessToken }); return { ok: result.ok, status: result.status, data: result.data }; } module.exports = { login, refresh, logout, me, requestPasswordReset, verifyPasswordResetCode, resetPassword, changePassword };