36 lines
1.2 KiB
JavaScript
36 lines
1.2 KiB
JavaScript
|
|
import { issueAccessToken, verifyRefreshToken } from "../../utils/auth"
|
||
|
|
|
||
|
|
// Example middleware to attach access token to outgoing requests
|
||
|
|
async function attachAccessToken(req, res, next) {
|
||
|
|
const accessToken = req.cookies.accessToken
|
||
|
|
if (!accessToken) {
|
||
|
|
return res.status(401).json({ message: "Access token missing" })
|
||
|
|
}
|
||
|
|
|
||
|
|
// You might want to check token expiration here and refresh if necessary
|
||
|
|
|
||
|
|
req.headers.Authorization = `Bearer ${accessToken}`
|
||
|
|
next()
|
||
|
|
}
|
||
|
|
|
||
|
|
export default async function handler(req, res) {
|
||
|
|
if (req.method !== "POST") {
|
||
|
|
return res.status(405).json({ message: "Method Not Allowed" })
|
||
|
|
}
|
||
|
|
|
||
|
|
const { refreshToken } = req.body
|
||
|
|
|
||
|
|
try {
|
||
|
|
const decoded = await verifyRefreshToken(refreshToken.value)
|
||
|
|
// Check if refresh token is valid, then issue a new access token
|
||
|
|
const accessToken = await issueAccessToken(decoded.userId)
|
||
|
|
console.log("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
|
||
|
|
res.setHeader("Set-Cookie", [`token=${accessToken}; Path=/; HttpOnly`])
|
||
|
|
|
||
|
|
return res.status(200).json({ accessToken })
|
||
|
|
} catch (error) {
|
||
|
|
console.error("Error refreshing token:", error)
|
||
|
|
return res.status(401).json({ message: "Invalid refresh token" })
|
||
|
|
}
|
||
|
|
}
|