Files
the-biergarten-app/config/nextConnect/middleware/getCurrentUser.ts
2023-02-09 23:58:03 -05:00

26 lines
754 B
TypeScript

import { NextApiResponse } from 'next';
import { NextHandler } from 'next-connect';
import findUserById from '@/services/User/findUserById';
import ServerError from '@/config/util/ServerError';
import { getLoginSession } from '../../auth/session';
import { UserExtendedNextApiRequest } from '../../auth/types';
/** Get the current user from the session. Adds the user to the request object. */
const getCurrentUser = async (
req: UserExtendedNextApiRequest,
res: NextApiResponse,
next: NextHandler,
) => {
const session = await getLoginSession(req);
const user = await findUserById(session?.id);
if (!user) {
throw new ServerError('Could not get user.', 401);
}
req.user = user;
return next();
};
export default getCurrentUser;