import jwt from "jsonwebtoken"; import { VAModel } from "../../../models/vaModel.js"; // Refresh Token VA async function va_refresh_token_callback(req, res) { try { const { refreshToken } = req.body || {}; if (!refreshToken) { return res.status(400).json({ success: false, message: "Refresh token missing", }); } // 🔍 Verify refresh token jwt.verify( refreshToken, process.env.JWT_SECRET_REFRESH_TOKEN || "DocTrackerSecretKeyRefreshToken", async (err, decoded) => { if (err) { return res.status(403).json({ success: false, message: "Invalid or expired refresh token", }); } // Check if user still exists const user = await VAModel.findById(decoded.id); if (!user) { return res.status(404).json({ success: false, message: "User no longer exists", }); } // Generate a new access token const newAccessToken = jwt.sign( { id: user._id, email: user.userDetails.email, name: user.userDetails.firstName, }, process.env.JWT_SECRET_ACCESS_TOKEN || "DocTrackerAccessKey", { expiresIn: "24h" } ); await VAModel.updateOne({ "userDetails.email": user.userDetails.email }, { $set: { accessToken: newAccessToken } }) return res.status(200).json({ success: true, message: "New access token generated", accessToken: newAccessToken, }); } ); } catch (error) { console.error("va_register error:", error); return res.status(500).json({ success: false, message: "Internal Server Error" }); } } export { va_refresh_token_callback };