Files

40 lines
813 B
TypeScript

import { NextFunction, Request, Response } from "express";
import { loadConfig } from "../config";
const jwt = require("jsonwebtoken");
const config = loadConfig();
// used by specific routes that need to authentication
export const authCheck = async (
req: Request,
res: Response,
next: NextFunction
) => {
try {
const { authorization } = req.headers;
if (!authorization) {
throw Error("No provided header");
}
// verify jwt token with our api secret
var decoded: JwtClaims = jwt.verify(authorization, config.JWT_TOKEN_SECRET);
res.locals.userInfo = decoded;
next();
} catch (error) {
res.status(401).send("unauthorized");
}
};
export interface JwtClaims {
userId: string;
googleUserId: string;
picture: string;
email: string;
name: string;
}