docs: move options to interface

This commit is contained in:
Bereket Engida
2024-11-14 18:19:43 +03:00
parent c0319b7a3e
commit 4591572d8c
7 changed files with 25 additions and 309 deletions

View File

@@ -13,6 +13,9 @@ import { Features } from "@/components/blocks/features";
import { ForkButton } from "@/components/fork-button";
import Link from "next/link";
import defaultMdxComponents from "fumadocs-ui/mdx";
import { createTypeTable } from "fumadocs-typescript/ui";
const { AutoTypeTable } = createTypeTable();
export default async function Page({
params,
@@ -65,6 +68,7 @@ export default async function Page({
Steps,
Tab,
Tabs,
AutoTypeTable,
GenerateSecret,
AnimatePresence,
TypeTable,

View File

@@ -105,7 +105,7 @@ export const InfiniteMovingCards = ({
<svg
stroke="currentColor"
fill="currentColor"
stroke-width="0"
strokeWidth="0"
viewBox="0 0 512 512"
xmlns="http://www.w3.org/2000/svg"
className="w-full"
@@ -116,7 +116,7 @@ export const InfiniteMovingCards = ({
<svg
stroke="currentColor"
fill="currentColor"
stroke-width="0"
strokeWidth="0"
viewBox="0 0 448 512"
xmlns="http://www.w3.org/2000/svg"
className="w-full"

View File

@@ -121,7 +121,18 @@ authClient.verifyEmail({
})
```
### Auto SignIn After Verification
To sign in the user automatically after they successfully verify their email, set the `autoSignInAfterVerification` option to `true`:
```ts
const auth = betterAuth({
//...your other options
emailVerification: {
autoSignInAfterVerification: true
}
})
```
## Password Reset Email

View File

@@ -3,293 +3,7 @@ title: Options
description: Better Auth Configuration Options
---
List of all the available options for configuring Better Auth.
### `appName`
`string` (default: `Better Auth`) - Name of the application.
### `baseURL`
`string` (default: `/`) - Base URL for the Better Auth. This is typically the root URL where your application server is hosted. If not explicitly set, Better Auth check the following environment variable: `BETTER_AUTH_URL`.
### `basePath`
`string` (default: `/api/auth`) - Base path for the Better Auth API. This is the path where Better Auth API will be mounted.
### `secret`
`string` - Random value used by the library for encryption and generating hashes.
List of all the available options for configuring Better Auth. See [Better Auth Options](https://github.com/better-auth/better-auth/blob/main/packages/better-auth/src/types/options.ts#L13).
### `database`
`DatabaseOptions` - Database configuration options. By defualt it supports, `betterSqlite3` instance, `Mysql2` pool, and `pg` pool. You can also pass a kysely dialect, a kysely instance, or an orm adapter.
Refer to the [Database](/docs/concept/database) section for more information.
### `emailAndPassword`
`EmailAndPasswordOptions` - Email and password configuration options.
<TypeTable
type={{
enabled: {
description: "Enable email and password authentication.",
type: 'boolean',
default: false,
},
autoSignIn: {
description: "Automatically login after successfull signup",
type: 'boolean',
default: true,
},
minPasswordLength: {
description: "Minimum length of the password.",
type: 'number',
default: 8
},
maxPasswordLength: {
description: "Maximum length of the password.",
type: 'number',
default: 128
},
sendResetPasswordToken: {
description: "Send reset password token to user's email.",
type: '(token: string, user: User) => Promise<void>',
},
resetPasswordTokenExpiresIn: {
description: "Expiration time for the reset password token. The value should be in seconds.",
type: 'number',
default: 60 * 60 * 1 // 1 hour
},
sendVerificationEmail: {
description: "Send verification email to user's email. It takes email and data that contains `url` and `token` props.",
type: `(email: string, data: Data) => Promise<void>`
},
sendEmailVerificationOnSignUp: {
description: "Trigger email verification on sign up. If set to true, `sendVerificationEmail` function must be provided.",
type: 'boolean',
default: false
},
password: {
description: "Custom password hashing function. ",
type: `{
hash: Function,
verify: Function
}`,
default: "scrypt"
}
}}
/>
### `socialProviders`
a configuration object that contains the configuration for social providers.
```ts title="auth.ts"
const auth = betterAuth({
socialProviders: {
google: {
clientId: process.env.GOOGLE_CLIENT_ID as string,
clientSecret: process.env.GOOGLE_CLIENT_SECRET as string,
},
github: {
clientId: process.env.GITHUB_CLIENT_ID as string,
clientSecret: process.env.GITHUB_CLIENT_SECRET as string,
}
}
})
```
### `plugins`
`Plugin[]` - List of plugins to use with Better Auth.
### `user`
`UserOptions` - User configuration options.
<TypeTable
type={{
modelName: {
description: "Name of the user model (table).",
type: 'string',
default: 'user'
}
}}
/>
### `session`
`SessionOptions` - Session configuration options.
<TypeTable
type={{
modelName: {
description: "Name of the session model (table).",
type: 'string',
default: 'session'
},
expiresIn: {
description: "Expiration time for the session token. The value should be in seconds.",
type: 'number',
default: "7 days (60 * 60 * 24 * 7)"
},
updateAge: {
description: "Time after which the session token will be updated. The value should be in seconds. If set to 0, the session will be updated everytiem it's used.",
type: 'number',
default: "1 day (60 * 60 * 24)"
}
}}
/>
### `account`
`AccountOptions` - Account configuration options.
<TypeTable
type={{
modelName: {
description: "Name of the account model (table).",
type: 'string',
default: 'account'
},
accountLinking: {
description: "Account linking configuration options.",
type: "AccountLinkingOptions"
}
}}
/>
#### `accountLinking`
`AccountLinkingOptions` - Account linking configuration options.
<TypeTable
type={{
enabled: {
description: "Enable account linking.",
type: 'boolean',
default: false
},
requireEmailVerified: {
description: "Require email verification to link account.",
type: 'boolean',
default: true
},
trustedProviders: {
description: "List of providers that can be linked without verifying the user's email.",
type: 'string[]',
default: '[]'
}
}}
/>
### `rateLimit`
`RateLimitOptions` - Rate limiting configuration options.
<TypeTable
type={{
windowMs: {
description: "Time window for rate limiting. The value should be in milliseconds.",
type: 'number',
default: 15 * 60 * 1000
},
max: {
description: "Maximum number of requests allowed in the window.",
type: 'number',
default: 100
},
customRules: {
description: "Custom rate limiting rules.",
type: "Record<string, RateLimitOptions>"
},
storage: {
description: "Storage for rate limiting data.",
type: "'memory' | 'database'",
default: 'memory'
},
tableName: {
description: "Name of the table to store rate limiting data. Applied when `storage` is set to `database`.",
type: 'string',
default: 'rateLimit'
},
customStorage: {
description: "Custom storage for rate limiting data.",
type: 'RateLimitStorage'
}
}}
/>
### `trustedOrigins`
list of trusted origins. This is very important to prevent CSRF attacks and open redirects.
```ts title="auth.ts"
const auth = betterAuth({
trustedOrigins: [
'https://example.com',
'https://app.example.com'
]
})
```
### `advanced`
`AdvancedOptions` - Advanced configuration options.
<TypeTable
type={{
useSecureCookies: {
description: "Use secure cookies. By default, when base URL is `https` secure cookies are used.",
type: 'boolean',
default: `true (if base URL is 'https')`
},
disableCSRFCheck: {
description: "Disable csrf protection checks. ⚠︎ only use this if you know what you are doing.",
type: 'boolean',
default: false
}
}}
/>
### `onAPIError`
`OnAPIErrorOptions` - Options for handling API errors.
<TypeTable
type={{
throw: {
description: "Throw the error.",
type: 'boolean',
default: false
},
onError: {
description: "Custom error handler.",
type: '(error: Error, ctx: APIContext) => void'
}
}}
/>
### `logger`
`LoggerOptions` - Logger configuration options.
<TypeTable
type={{
disabled: {
description: "Disable logging.",
type: 'boolean',
default: false
},
verboseLogging: {
description: "Enable verbose logging.",
type: 'boolean',
default: false
},
}}
/>
<AutoTypeTable path="./lib/auth.ts" name="BetterAuthOptions" />

3
docs/lib/auth.ts Normal file
View File

@@ -0,0 +1,3 @@
import { BetterAuthOptions } from "better-auth";
export { type BetterAuthOptions };

View File

@@ -60,7 +60,7 @@
"fumadocs-docgen": "^1.1.0",
"fumadocs-mdx": "11.1.0",
"fumadocs-twoslash": "^1.1.2",
"fumadocs-typescript": "^2.1.0",
"fumadocs-typescript": "^3.0.2",
"fumadocs-ui": "14.0.2",
"geist": "^1.3.1",
"input-otp": "^1.2.4",

20
pnpm-lock.yaml generated
View File

@@ -476,8 +476,8 @@ importers:
specifier: ^1.1.2
version: 1.1.3(fumadocs-ui@14.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(next@15.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(shiki@1.22.2)(typescript@5.6.3)
fumadocs-typescript:
specifier: ^2.1.0
version: 2.1.0(typescript@5.6.3)
specifier: ^3.0.2
version: 3.0.2(typescript@5.6.3)
fumadocs-ui:
specifier: 14.0.2
version: 14.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(next@15.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -10309,11 +10309,6 @@ packages:
fumadocs-ui: 13.x.x
shiki: 1.x.x
fumadocs-typescript@2.1.0:
resolution: {integrity: sha512-fxxC8F+bQQxlVQA03vWaoztJFeKkevW3WgT7ECPCmdOB2UFsRB61cgzlRvwKqtFWJuJYASX55+2wEMxXAjzBjQ==}
peerDependencies:
typescript: '*'
fumadocs-typescript@3.0.2:
resolution: {integrity: sha512-SqYJy+NxjjuQQeom7wLpODYiWtIKWfndguHL3XKXaMUvhlsjmsWWTaXJWKaqIfOStiYJQlGWrXxFA2Rrpbx63Q==}
peerDependencies:
@@ -28196,17 +28191,6 @@ snapshots:
- supports-color
- typescript
fumadocs-typescript@2.1.0(typescript@5.6.3):
dependencies:
fast-glob: 3.3.2
hast-util-to-jsx-runtime: 2.3.2
mdast-util-from-markdown: 2.0.2
mdast-util-gfm: 3.0.0
mdast-util-to-hast: 13.2.0
typescript: 5.6.3
transitivePeerDependencies:
- supports-color
fumadocs-typescript@3.0.2(typescript@5.6.3):
dependencies:
'@types/node': 22.8.1