30 lines
929 B
TypeScript
30 lines
929 B
TypeScript
import { Token } from "@prisma/client"
|
|
import jwt from "jsonwebtoken"
|
|
import jwtVerifyCatch from "../jwtVerifyCatch"
|
|
|
|
async function checkTokenIsValid<T>(
|
|
payload: T & { token: string; tokenType: Token["type"] }
|
|
) {
|
|
const { token, tokenType } = payload
|
|
|
|
// Verify the token and get the payload
|
|
let tokenData: string | jwt.JwtPayload
|
|
try {
|
|
tokenData = jwt.verify(token, process.env.ACCESS_TOKEN_SECRET as string)
|
|
} catch (err: any) {
|
|
// Deal with the problem in more detail
|
|
return Promise.reject(jwtVerifyCatch(tokenType, err))
|
|
}
|
|
// Making sure the token data is not a string (because it should be an object)
|
|
if (typeof tokenData === "string") {
|
|
return Promise.reject({
|
|
message: tokenType + "-Token data was a string. Token: " + token,
|
|
statusCode: 401,
|
|
solved: false,
|
|
})
|
|
}
|
|
|
|
return { ...payload, tokenBody: token, tokenIsValid: true }
|
|
}
|
|
|
|
export default checkTokenIsValid
|