First prisma integration step
This commit is contained in:
parent
6918729c45
commit
0507309ab1
21 changed files with 645 additions and 1 deletions
28
leaky-ships/lib/backend/components/checkTokenIsValid.ts
Normal file
28
leaky-ships/lib/backend/components/checkTokenIsValid.ts
Normal file
|
@ -0,0 +1,28 @@
|
|||
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
|
Loading…
Add table
Add a link
Reference in a new issue