From 95fd56823152aaaadf3987145f950fd08527fe2f Mon Sep 17 00:00:00 2001
From: Bereket Engida <86073083+Bekacru@users.noreply.github.com>
Date: Sun, 8 Dec 2024 10:54:58 +0300
Subject: [PATCH] feat: error codes (#771)
---
.../better-auth/src/api/routes/account.ts | 5 +-
.../src/api/routes/email-verification.ts | 3 +-
.../src/api/routes/forget-password.ts | 5 +-
.../better-auth/src/api/routes/session.ts | 3 +-
.../better-auth/src/api/routes/sign-in.ts | 28 +++++------
.../better-auth/src/api/routes/sign-out.ts | 3 +-
.../better-auth/src/api/routes/sign-up.ts | 48 +++++++++---------
.../better-auth/src/api/routes/update-user.ts | 23 ++++-----
packages/better-auth/src/auth.ts | 17 ++++++-
.../better-auth/src/client/react/index.ts | 7 ++-
.../better-auth/src/client/solid/index.ts | 9 ++--
.../better-auth/src/client/svelte/index.ts | 7 ++-
packages/better-auth/src/client/types.ts | 11 +++++
packages/better-auth/src/client/vanilla.ts | 9 ++--
packages/better-auth/src/client/vue/index.ts | 7 ++-
packages/better-auth/src/error/codes.ts | 22 +++++++++
.../src/plugins/admin/admin.test.ts | 49 +++++++++----------
.../better-auth/src/plugins/admin/index.ts | 17 +++++--
.../src/plugins/anonymous/anon.test.ts | 29 +++++------
.../src/plugins/anonymous/index.ts | 15 ++++--
.../src/plugins/email-otp/index.ts | 17 +++++--
.../src/plugins/generic-oauth/index.ts | 6 ++-
.../src/plugins/magic-link/index.ts | 13 +++--
.../src/plugins/multi-session/index.ts | 11 +++--
.../src/plugins/organization/error-codes.ts | 34 +++++++++++++
.../src/plugins/organization/organization.ts | 7 ++-
.../organization/routes/crud-invites.ts | 43 +++++++++-------
.../organization/routes/crud-members.ts | 35 +++++++------
.../plugins/organization/routes/crud-org.ts | 30 +++++++-----
.../better-auth/src/plugins/passkey/index.ts | 36 +++++++++-----
.../src/plugins/phone-number/index.ts | 33 ++++++++-----
.../plugins/two-factor/backup-codes/index.ts | 9 ++--
.../src/plugins/two-factor/error-code.ts | 8 +++
.../src/plugins/two-factor/index.ts | 4 +-
.../src/plugins/two-factor/otp/index.ts | 7 +--
.../src/plugins/two-factor/totp/index.ts | 7 +--
.../better-auth/src/plugins/username/index.ts | 20 +++++---
packages/better-auth/src/types/plugins.ts | 17 ++++++-
38 files changed, 443 insertions(+), 211 deletions(-)
create mode 100644 packages/better-auth/src/error/codes.ts
create mode 100644 packages/better-auth/src/plugins/organization/error-codes.ts
create mode 100644 packages/better-auth/src/plugins/two-factor/error-code.ts
diff --git a/packages/better-auth/src/api/routes/account.ts b/packages/better-auth/src/api/routes/account.ts
index cb74d496e5..2df6307771 100644
--- a/packages/better-auth/src/api/routes/account.ts
+++ b/packages/better-auth/src/api/routes/account.ts
@@ -4,6 +4,7 @@ import { socialProviderList } from "../../social-providers";
import { APIError } from "better-call";
import { generateState } from "../../oauth2";
import { sessionMiddleware } from "./session";
+import { BASE_ERROR_CODES } from "../../error/codes";
export const listUserAccounts = createAuthEndpoint(
"/list-accounts",
@@ -123,7 +124,7 @@ export const linkSocialAccount = createAuthEndpoint(
);
if (existingAccount) {
throw new APIError("BAD_REQUEST", {
- message: "Social Account is already linked.",
+ message: BASE_ERROR_CODES.SOCIAL_ACCOUNT_ALREADY_LINKED,
});
}
const provider = c.context.socialProviders.find(
@@ -137,7 +138,7 @@ export const linkSocialAccount = createAuthEndpoint(
},
);
throw new APIError("NOT_FOUND", {
- message: "Provider not found",
+ message: BASE_ERROR_CODES.PROVIDER_NOT_FOUND,
});
}
const state = await generateState(c, {
diff --git a/packages/better-auth/src/api/routes/email-verification.ts b/packages/better-auth/src/api/routes/email-verification.ts
index eb1fd945fd..c1b0297797 100644
--- a/packages/better-auth/src/api/routes/email-verification.ts
+++ b/packages/better-auth/src/api/routes/email-verification.ts
@@ -6,6 +6,7 @@ import { APIError } from "better-call";
import { getSessionFromCtx } from "./session";
import { setSessionCookie } from "../../cookies";
import type { GenericEndpointContext, User } from "../../types";
+import { BASE_ERROR_CODES } from "../../error/codes";
export async function createEmailVerificationToken(
secret: string,
@@ -143,7 +144,7 @@ export const sendVerificationEmail = createAuthEndpoint(
const user = await ctx.context.internalAdapter.findUserByEmail(email);
if (!user) {
throw new APIError("BAD_REQUEST", {
- message: "User not found",
+ message: BASE_ERROR_CODES.USER_NOT_FOUND,
});
}
await sendVerificationEmailFn(ctx, user.user);
diff --git a/packages/better-auth/src/api/routes/forget-password.ts b/packages/better-auth/src/api/routes/forget-password.ts
index 46b878a652..839334440c 100644
--- a/packages/better-auth/src/api/routes/forget-password.ts
+++ b/packages/better-auth/src/api/routes/forget-password.ts
@@ -4,6 +4,7 @@ import { APIError } from "better-call";
import type { AuthContext } from "../../init";
import { getDate } from "../../utils/date";
import { generateId } from "../../utils";
+import { BASE_ERROR_CODES } from "../../error/codes";
function redirectError(
ctx: AuthContext,
@@ -241,7 +242,7 @@ export const resetPassword = createAuthEndpoint(
: "");
if (!token) {
throw new APIError("BAD_REQUEST", {
- message: "Token not found",
+ message: BASE_ERROR_CODES.INVALID_TOKEN,
});
}
@@ -252,7 +253,7 @@ export const resetPassword = createAuthEndpoint(
await ctx.context.internalAdapter.findVerificationValue(id);
if (!verification || verification.expiresAt < new Date()) {
throw new APIError("BAD_REQUEST", {
- message: "Invalid token",
+ message: BASE_ERROR_CODES.INVALID_TOKEN,
});
}
await ctx.context.internalAdapter.deleteVerificationValue(verification.id);
diff --git a/packages/better-auth/src/api/routes/session.ts b/packages/better-auth/src/api/routes/session.ts
index 4ae9f46f6e..bbebca4edf 100644
--- a/packages/better-auth/src/api/routes/session.ts
+++ b/packages/better-auth/src/api/routes/session.ts
@@ -14,6 +14,7 @@ import type {
} from "../../types";
import { hmac } from "../../crypto/hash";
import { safeJSONParse } from "../../utils/json";
+import { BASE_ERROR_CODES } from "../../error/codes";
export const getSession =