Added login and refresh token routes
This commit is contained in:
parent
48276d7161
commit
adce955f69
|
|
@ -86,7 +86,8 @@ async function va_register(req, res) {
|
|||
// Login VA
|
||||
async function va_login_callback(req, res) {
|
||||
try {
|
||||
const payload = req.body ? JSON.parse(req.body) : {};
|
||||
// const payload = req.body ? JSON.parse(req.body) : {};
|
||||
const payload = req.body || {};
|
||||
const { userDetails } = payload;
|
||||
|
||||
if (!userDetails || !userDetails.email || !userDetails.password) {
|
||||
|
|
@ -112,32 +113,97 @@ async function va_login_callback(req, res) {
|
|||
return res.status(401).json({ success: false, message: "Invalid password" });
|
||||
}
|
||||
|
||||
// Generate JWT token with 24h expiry
|
||||
const token = jwt.sign(
|
||||
// Generate JWT accessToken with 24h expiry
|
||||
const accessToken = jwt.sign(
|
||||
{
|
||||
id: user._id,
|
||||
email: user.userDetails.email,
|
||||
name: user.userDetails.firstName,
|
||||
},
|
||||
process.env.JWT_SECRET, // e.g. "mySuperSecretKey"
|
||||
process.env.JWT_SECRET_ACCESS_TOKEN || "DocTrackerSecretKey",
|
||||
{ expiresIn: "24h" }
|
||||
);
|
||||
|
||||
// Return token and user info
|
||||
// Generate JWT refreshToken with 24h expiry
|
||||
const refreshToken = jwt.sign(
|
||||
{
|
||||
id: user._id,
|
||||
email: user.userDetails.email,
|
||||
name: user.userDetails.firstName,
|
||||
},
|
||||
process.env.JWT_SECRET_REFRESH_TOKEN || "DocTrackerSecretKeyRefreshToken",
|
||||
{ expiresIn: "30d" }
|
||||
);
|
||||
|
||||
// Return accessToken and user info
|
||||
return res.status(200).json({
|
||||
success: true,
|
||||
message: "Login successful",
|
||||
token,
|
||||
accessToken,
|
||||
refreshToken,
|
||||
user: {
|
||||
id: user._id,
|
||||
name: user.userDetails.firstName,
|
||||
email: user.userDetails.email,
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("va_register error:", error);
|
||||
return res.status(500).json({ success: false, message: "Internal Server Error" });
|
||||
}
|
||||
}
|
||||
|
||||
// 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",
|
||||
});
|
||||
}
|
||||
|
||||
return res.status(201).json({ success: true, data: 'created' });
|
||||
// 🔍 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" }
|
||||
);
|
||||
|
||||
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" });
|
||||
|
|
@ -420,5 +486,6 @@ export {
|
|||
va_filter_search,
|
||||
va_register,
|
||||
va_projects_callback,
|
||||
va_login_callback
|
||||
va_login_callback,
|
||||
va_refresh_token_callback
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
import express from "express";
|
||||
const vaRoutes = express.Router();
|
||||
|
||||
import { va_callback, va_username_callback, va_clients_callback, va_clients_projects_callback, va_log_callback, va_project_log_callback, va_filter_search, va_projects_callback, va_register, va_login_callback } from "../../controllers/va.controller.js";
|
||||
import { va_callback, va_username_callback, va_clients_callback, va_clients_projects_callback, va_log_callback, va_project_log_callback, va_filter_search, va_projects_callback, va_register, va_login_callback, va_refresh_token_callback } from "../../controllers/va.controller.js";
|
||||
|
||||
vaRoutes.get("/", va_callback); // VA Callback for getting active VA
|
||||
|
||||
vaRoutes.get("/login", va_login_callback); // VA Callback for login VA
|
||||
vaRoutes.post("/login", va_login_callback); // VA Callback for login VA
|
||||
|
||||
vaRoutes.post("/refreshToken", va_refresh_token_callback); // VA Callback for refresh token
|
||||
|
||||
vaRoutes.post("/register", va_register); // Register a new VA
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue