Files
sign/packages/ee/server-only/limits/handler.ts

57 lines
1.2 KiB
TypeScript
Raw Normal View History

2023-10-15 20:26:32 +11:00
import { match } from 'ts-pattern';
2025-01-02 15:33:37 +11:00
import { getSession } from '@documenso/auth/server/lib/utils/get-session';
2023-10-15 20:26:32 +11:00
import { ERROR_CODES } from './errors';
import { getServerLimits } from './server';
2025-01-02 15:33:37 +11:00
export const limitsHandler = async (req: Request) => {
2023-10-15 20:26:32 +11:00
try {
2025-01-02 15:33:37 +11:00
const { user } = await getSession(req);
2023-10-15 20:26:32 +11:00
2025-01-02 15:33:37 +11:00
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);
}
2025-02-16 00:44:01 +11:00
const limits = await getServerLimits({ email: user.email, teamId });
2023-10-15 20:26:32 +11:00
2025-01-02 15:33:37 +11:00
return Response.json(limits, {
status: 200,
});
2023-10-15 20:26:32 +11:00
} catch (err) {
console.error('error', err);
if (err instanceof Error) {
const status = match(err.message)
.with(ERROR_CODES.UNAUTHORIZED, () => 401)
.otherwise(() => 500);
2025-01-02 15:33:37 +11:00
return Response.json(
{
error: ERROR_CODES[err.message] ?? ERROR_CODES.UNKNOWN,
},
{
status,
},
);
2023-10-15 20:26:32 +11:00
}
2025-01-02 15:33:37 +11:00
return Response.json(
{
error: ERROR_CODES.UNKNOWN,
},
{
status: 500,
},
);
2023-10-15 20:26:32 +11:00
}
};