41 lines
838 B
TypeScript
41 lines
838 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.jwtClaims = decoded;
|
|
|
|
next();
|
|
} catch (error) {
|
|
console.log(error);
|
|
res.status(401).send("unauthorized");
|
|
}
|
|
};
|
|
|
|
export interface JwtClaims {
|
|
userId: string;
|
|
googleUserId: string;
|
|
picture: string;
|
|
email: string;
|
|
name: string;
|
|
}
|