nuvira/server/api/auth.ts
2025-02-27 03:20:54 +01:00

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',
});
}
});