You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

28 lines
736 B
TypeScript

import jwt, { Secret } from "jsonwebtoken"
import { User } from "../models/user"
import { NextFunction, Request, Response } from "express"
const SECRET = process.env.TOKEN_SECRET as Secret
export const verifyAuthToken = (req: Request, res: Response, next: NextFunction) => {
if (!req.headers.authorization) {
res.status(401)
res.json("Missing authorization header")
return false
}
try {
const token = req.headers.authorization.split(' ')[1]
jwt.verify(token, SECRET)
next()
} catch (err) {
res.status(401)
res.json("Access denied, invalid token")
}
}
export const verifyUserToken = (user: User | null) => {
return jwt.sign({ user }, SECRET)
}