import bcrypt from 'bcryptjs'; import jwt from 'jsonwebtoken'; import { promises } from 'fs'; import path from 'path'; const JWT_SECRET = process.env.JWT_SECRET || "harheimertc-secret-key-change-in-production"; const getDataPath = (filename) => { const cwd = process.cwd(); if (cwd.endsWith(".output")) { return path.join(cwd, "../server/data", filename); } return path.join(cwd, "server/data", filename); }; const USERS_FILE = getDataPath("users.json"); const SESSIONS_FILE = getDataPath("sessions.json"); async function readUsers() { try { const data = await promises.readFile(USERS_FILE, "utf-8"); return JSON.parse(data); } catch (error) { console.error("Fehler beim Lesen der Benutzerdaten:", error); return []; } } async function writeUsers(users) { try { await promises.writeFile(USERS_FILE, JSON.stringify(users, null, 2), "utf-8"); return true; } catch (error) { console.error("Fehler beim Schreiben der Benutzerdaten:", error); return false; } } async function readSessions() { try { const data = await promises.readFile(SESSIONS_FILE, "utf-8"); return JSON.parse(data); } catch (error) { console.error("Fehler beim Lesen der Sessions:", error); return []; } } async function writeSessions(sessions) { try { await promises.writeFile(SESSIONS_FILE, JSON.stringify(sessions, null, 2), "utf-8"); return true; } catch (error) { console.error("Fehler beim Schreiben der Sessions:", error); return false; } } async function hashPassword(password) { const salt = await bcrypt.genSalt(10); return await bcrypt.hash(password, salt); } async function verifyPassword(password, hash) { return await bcrypt.compare(password, hash); } function generateToken(user) { return jwt.sign( { id: user.id, email: user.email, role: user.role }, JWT_SECRET, { expiresIn: "7d" } ); } function verifyToken(token) { try { return jwt.verify(token, JWT_SECRET); } catch (error) { return null; } } async function getUserById(id) { const users = await readUsers(); return users.find((u) => u.id === id); } async function getUserFromToken(token) { const decoded = verifyToken(token); if (!decoded) return null; const users = await readUsers(); return users.find((u) => u.id === decoded.id); } async function createSession(userId, token) { const sessions = await readSessions(); const session = { id: Date.now().toString(), userId, token, createdAt: (/* @__PURE__ */ new Date()).toISOString(), expiresAt: new Date(Date.now() + 7 * 24 * 60 * 60 * 1e3).toISOString() // 7 days }; sessions.push(session); await writeSessions(sessions); return session; } async function deleteSession(token) { const sessions = await readSessions(); const filtered = sessions.filter((s) => s.token !== token); await writeSessions(filtered); } export { getUserFromToken as a, verifyToken as b, createSession as c, deleteSession as d, getUserById as e, generateToken as g, hashPassword as h, readUsers as r, verifyPassword as v, writeUsers as w }; //# sourceMappingURL=auth.mjs.map