Files
web/apps/scandic-web/server/errors/trpc.ts
Chuma Mcphoy (We Ahead) 8061ab63a8 Merged in feat/LOY-158-signup-with-existing-email-error-handling (pull request #1441)
Feat/LOY-158 signup with existing email error handling

* feat(LOY-158): Add handling for email conflict during signup

- Implement specific error handling for email conflict in signup form
- Add localized error message for existing email accounts across language dictionaries
- Introduce new error type `conflictError` in trpc error handling

* fix(LOY-158): revert translation changes

* fix(LOY-158): Correct Finnish translation for cancellation message


Approved-by: Christian Andolf
2025-02-27 14:30:03 +00:00

86 lines
1.8 KiB
TypeScript

import { TRPCError } from "@trpc/server"
export function unauthorizedError(cause?: unknown) {
return new TRPCError({
code: "UNAUTHORIZED",
message: `Unauthorized`,
cause,
})
}
export function forbiddenError(cause?: unknown) {
return new TRPCError({
code: "FORBIDDEN",
message: `Forbidden`,
cause,
})
}
export function conflictError(cause?: unknown) {
return new TRPCError({
code: "CONFLICT",
message: `Conflict`,
cause,
})
}
export function badRequestError(cause?: unknown) {
return new TRPCError({
code: "BAD_REQUEST",
message: `Bad request`,
cause,
})
}
export function notFound(cause?: unknown) {
return new TRPCError({
code: "NOT_FOUND",
message: `Not found`,
cause,
})
}
export function internalServerError(cause?: unknown) {
return new TRPCError({
code: "INTERNAL_SERVER_ERROR",
message: `Internal Server Error`,
cause,
})
}
export const SESSION_EXPIRED = "SESSION_EXPIRED"
export class SessionExpiredError extends Error {}
export function sessionExpiredError() {
return new TRPCError({
code: "UNAUTHORIZED",
message: SESSION_EXPIRED,
cause: new SessionExpiredError(SESSION_EXPIRED),
})
}
export const PUBLIC_UNAUTHORIZED = "PUBLIC_UNAUTHORIZED"
export class PublicUnauthorizedError extends Error {}
export function publicUnauthorizedError() {
return new TRPCError({
code: "UNAUTHORIZED",
message: PUBLIC_UNAUTHORIZED,
cause: new PublicUnauthorizedError(PUBLIC_UNAUTHORIZED),
})
}
export function serverErrorByStatus(status: number, cause?: unknown) {
switch (status) {
case 401:
return unauthorizedError(cause)
case 403:
return forbiddenError(cause)
case 404:
return notFound(cause)
case 409:
return conflictError(cause)
case 500:
default:
return internalServerError(cause)
}
}