34 lines
907 B
TypeScript
34 lines
907 B
TypeScript
import { NextRequest, NextResponse } from 'next/server';
|
|
|
|
import { AuthorizationError } from '@/app/api-utlities/errors/authorization.error';
|
|
|
|
export const authorizationMiddleware =
|
|
(handler: Function, authorizationTokenKey: string) =>
|
|
async (req: NextRequest, ...args: any[]) => {
|
|
const requestedToken = req.cookies.get(authorizationTokenKey);
|
|
|
|
if (!requestedToken) {
|
|
return NextResponse.json(
|
|
{ error: 'User does not have access' },
|
|
{ status: 401 },
|
|
);
|
|
}
|
|
|
|
try {
|
|
return await handler(req, requestedToken, ...args);
|
|
} catch (error) {
|
|
if (error instanceof AuthorizationError) {
|
|
const response = NextResponse.json(
|
|
{ message: 'Authorization session was timed out' },
|
|
{ status: 401 },
|
|
);
|
|
|
|
response.cookies.delete(authorizationTokenKey);
|
|
|
|
return response;
|
|
}
|
|
|
|
throw error;
|
|
}
|
|
};
|