mirror of
https://github.com/documenso/documenso.git
synced 2025-11-10 12:32:34 +10:00
57 lines
1.2 KiB
TypeScript
57 lines
1.2 KiB
TypeScript
import { match } from 'ts-pattern';
|
|
|
|
import { getSession } from '@documenso/auth/server/lib/utils/get-session';
|
|
|
|
import { ERROR_CODES } from './errors';
|
|
import { getServerLimits } from './server';
|
|
|
|
export const limitsHandler = async (req: Request) => {
|
|
try {
|
|
const { user } = await getSession(req);
|
|
|
|
const rawTeamId = req.headers.get('team-id');
|
|
|
|
let teamId: number | null = null;
|
|
|
|
if (typeof rawTeamId === 'string' && !isNaN(parseInt(rawTeamId, 10))) {
|
|
teamId = parseInt(rawTeamId, 10);
|
|
}
|
|
|
|
if (!teamId && rawTeamId) {
|
|
throw new Error(ERROR_CODES.INVALID_TEAM_ID);
|
|
}
|
|
|
|
const limits = await getServerLimits({ email: user.email, teamId });
|
|
|
|
return Response.json(limits, {
|
|
status: 200,
|
|
});
|
|
} catch (err) {
|
|
console.error('error', err);
|
|
|
|
if (err instanceof Error) {
|
|
const status = match(err.message)
|
|
.with(ERROR_CODES.UNAUTHORIZED, () => 401)
|
|
.otherwise(() => 500);
|
|
|
|
return Response.json(
|
|
{
|
|
error: ERROR_CODES[err.message] ?? ERROR_CODES.UNKNOWN,
|
|
},
|
|
{
|
|
status,
|
|
},
|
|
);
|
|
}
|
|
|
|
return Response.json(
|
|
{
|
|
error: ERROR_CODES.UNKNOWN,
|
|
},
|
|
{
|
|
status: 500,
|
|
},
|
|
);
|
|
}
|
|
};
|