Extends omsorgCore with full CRUD for Facility/Contract/Order plus configurable value lists and an audit trail, and wires the omsorgapp frontend up to the new facilities, settings, and audit-log modules; includes a sidebar active-nav-item highlight. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
89 lines
3.5 KiB
JavaScript
89 lines
3.5 KiB
JavaScript
const { AuthApi } = require('omsorgcore-client-ts');
|
|
const { configFor, callApi } = require('./apiClientHelpers.cjs');
|
|
|
|
// Kapselt /api/auth/* von omsorgCore über den generierten Client (omsorgcore-client-ts).
|
|
// 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 api = new AuthApi(configFor(undefined));
|
|
const result = await callApi(api.apiAuthLoginPostRaw({ loginRequest: { 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 api = new AuthApi(configFor(undefined));
|
|
const result = await callApi(api.apiAuthRefreshPostRaw({ refreshRequest: { refreshToken } }));
|
|
if (!result.ok) return { ok: false, status: result.status };
|
|
return { ok: true, ...toTokenPair(result.data) };
|
|
}
|
|
|
|
async function logout(refreshToken) {
|
|
const api = new AuthApi(configFor(undefined));
|
|
const result = await callApi(api.apiAuthLogoutPostRaw({ logoutRequest: { refreshToken } }));
|
|
return { ok: result.ok, status: result.status };
|
|
}
|
|
|
|
async function me(accessToken) {
|
|
const api = new AuthApi(configFor(accessToken));
|
|
const result = await callApi(api.apiAuthMeGetRaw());
|
|
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 api = new AuthApi(configFor(undefined));
|
|
const result = await callApi(api.apiAuthForgotPasswordRequestPostRaw({ forgotPasswordRequestRequest: { username } }));
|
|
if (!result.ok) return { ok: false, status: result.status };
|
|
return { ok: true, status: result.data.status };
|
|
}
|
|
|
|
async function verifyPasswordResetCode(username, pin) {
|
|
const api = new AuthApi(configFor(undefined));
|
|
const result = await callApi(api.apiAuthForgotPasswordVerifyPostRaw({ forgotPasswordVerifyRequest: { 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 api = new AuthApi(configFor(undefined));
|
|
const result = await callApi(api.apiAuthForgotPasswordResetPostRaw({ forgotPasswordResetRequest: { resetToken, newPassword } }));
|
|
return { ok: result.ok, status: result.status, data: result.data };
|
|
}
|
|
|
|
async function changePassword(accessToken, currentPassword, newPassword) {
|
|
const api = new AuthApi(configFor(accessToken));
|
|
const result = await callApi(api.apiAuthChangePasswordPostRaw({ changePasswordRequest: { currentPassword, newPassword } }));
|
|
return { ok: result.ok, status: result.status, data: result.data };
|
|
}
|
|
|
|
async function getPasswordPolicy() {
|
|
const api = new AuthApi(configFor(undefined));
|
|
const result = await callApi(api.apiAuthPasswordPolicyGetRaw());
|
|
if (!result.ok) return { ok: false, status: result.status };
|
|
return { ok: true, minLength: result.data.minLength };
|
|
}
|
|
|
|
module.exports = {
|
|
login,
|
|
refresh,
|
|
logout,
|
|
me,
|
|
requestPasswordReset,
|
|
verifyPasswordResetCode,
|
|
resetPassword,
|
|
changePassword,
|
|
getPasswordPolicy
|
|
};
|