feat: add sample endpoint to test JWT

This commit is contained in:
2026-01-03 04:37:20 +01:00
parent ec5cedce5a
commit c19a098b1c
8 changed files with 173 additions and 15 deletions

View File

@@ -0,0 +1,41 @@
import { Request, Response, NextFunction } from "express";
import { ErrorDTO } from "../schemas/miscSchema";
import * as jwt from "../tools/jwt";
const requireUser = (req: Request, res: Response, next: NextFunction) => {
const user: jwt.JwtStatus = res.locals.user;
let error: ErrorDTO | null = null;
// No user? Something errored partway. Display an error.
if (!user)
error = {
status: 'error',
error: 'Unauthorized, please sign in',
code: 'unauthorized_generic'
};
// Check if token is expired first.
// This is because a token can be valid
// (if signature matches) while being expired.
else if (user.expired)
error = {
status: 'error',
error: 'Token expired, please sign in again',
code: 'expired_token'
};
// Previous checks failed?
// As a last resort, check if the token is valid.
else if (!user.valid)
error = {
status: 'error',
error: 'Invalid token, please sign in',
code: 'invalid_token'
};
if (error !== null)
return res.status(401)
.send(error);
return next();
};
export default requireUser;