31 lines
No EOL
1.1 KiB
TypeScript
31 lines
No EOL
1.1 KiB
TypeScript
import { defineEventHandler, getCookie, createError } from 'h3';
|
|
import jwt from 'jsonwebtoken';
|
|
import {jwt_globals} from "~/core/globals";
|
|
import Logger from "~/core/logger";
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
try {
|
|
const token = getCookie(event, 'token');
|
|
Logger.info("Checking token " + token);
|
|
if (!token) {
|
|
throw createError({ statusCode: 401, statusMessage: 'Unauthorized' });
|
|
}
|
|
|
|
const secret = jwt_globals.secret;
|
|
if (!secret) {
|
|
throw createError({ statusCode: 500, statusMessage: 'JWT secret not set' });
|
|
}
|
|
|
|
const decoded = jwt.verify(token, secret) as { userId: string };
|
|
if (!decoded?.userId) {
|
|
throw createError({ statusCode: 401, statusMessage: 'Invalid token' });
|
|
}
|
|
Logger.success("user has been authed, password: " + decoded.userId);
|
|
return { success: true };
|
|
} catch (error: any) {
|
|
return createError({
|
|
statusCode: error.statusCode || 500,
|
|
statusMessage: error.statusMessage || 'Invalid or expired token',
|
|
});
|
|
}
|
|
}); |