import { passkeyClient } from "@better-auth/passkey/client";
import {
adminClient,
inferAdditionalFields,
lastLoginMethodClient,
magicLinkClient,
multiSessionClient,
oneTapClient,
twoFactorClient
} from "better-auth/client/plugins";
import { createAuthClient } from "better-auth/react";
import { toast } from "sonner";
import { ac, admin as adminAc, operator as operatorAc, organizationAdmin as organizationAdminAc, user as userAc } from "@/lib/auth/admin-permissions";
import type { BetterAuthType } from "@/lib/auth/auth";
import { businessSolutionClient } from "@/lib/auth/plugins/business-solution-plugin-client";
import { signInLegacyClient } from "@/lib/auth/plugins/sign-in-legacy-plugin-client";
export const client = createAuthClient({
plugins: [
inferAdditionalFields<BetterAuthType>(),
multiSessionClient(),
adminClient({
ac: ac,
roles: {
ADMIN: adminAc,
USER: userAc,
OPERATOR: operatorAc,
ORGANIZATION_ADMIN: organizationAdminAc
}
}),
magicLinkClient(),
oneTapClient({
clientId: process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID as string,
promptOptions: {
maxAttempts: 1
}
}),
passkeyClient(),
twoFactorClient({
onTwoFactorRedirect() {
window.location.href = "/auth/two-factor";
}
}),
lastLoginMethodClient(),
businessSolutionClient(),
signInLegacyClient()
],
fetchOptions: {
onError(e) {
if (e.error.status === 429) {
toast.error("Too many requests. Please try again later.");
}
}
}
});
export const { signIn, signUp, signOut, useSession } = client;
import { passkeyClient } from "@better-auth/passkey/client";
import {
adminClient,
inferAdditionalFields,
lastLoginMethodClient,
magicLinkClient,
multiSessionClient,
oneTapClient,
twoFactorClient
} from "better-auth/client/plugins";
import { createAuthClient } from "better-auth/react";
import { toast } from "sonner";
import { ac, admin as adminAc, operator as operatorAc, organizationAdmin as organizationAdminAc, user as userAc } from "@/lib/auth/admin-permissions";
import type { BetterAuthType } from "@/lib/auth/auth";
import { businessSolutionClient } from "@/lib/auth/plugins/business-solution-plugin-client";
import { signInLegacyClient } from "@/lib/auth/plugins/sign-in-legacy-plugin-client";
export const client = createAuthClient({
plugins: [
inferAdditionalFields<BetterAuthType>(),
multiSessionClient(),
adminClient({
ac: ac,
roles: {
ADMIN: adminAc,
USER: userAc,
OPERATOR: operatorAc,
ORGANIZATION_ADMIN: organizationAdminAc
}
}),
magicLinkClient(),
oneTapClient({
clientId: process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID as string,
promptOptions: {
maxAttempts: 1
}
}),
passkeyClient(),
twoFactorClient({
onTwoFactorRedirect() {
window.location.href = "/auth/two-factor";
}
}),
lastLoginMethodClient(),
businessSolutionClient(),
signInLegacyClient()
],
fetchOptions: {
onError(e) {
if (e.error.status === 429) {
toast.error("Too many requests. Please try again later.");
}
}
}
});
export const { signIn, signUp, signOut, useSession } = client;