@lobehub/lobehub 2.1.1 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +4 -3
- package/.github/workflows/release-desktop-stable.yml +1 -1
- package/CHANGELOG.md +50 -0
- package/Dockerfile +6 -4
- package/README.md +3 -4
- package/README.zh-CN.md +3 -4
- package/apps/desktop/src/main/controllers/McpInstallCtr.ts +10 -10
- package/apps/desktop/src/main/controllers/NetworkProxyCtr.ts +6 -6
- package/apps/desktop/src/main/controllers/RemoteServerSyncCtr.ts +2 -2
- package/changelog/v2.json +14 -0
- package/docs/changelog/2025-03-02-new-models.mdx +1 -1
- package/docs/changelog/2025-03-02-new-models.zh-CN.mdx +1 -1
- package/docs/changelog/2025-04-06-exports.mdx +1 -1
- package/docs/changelog/2025-04-06-exports.zh-CN.mdx +1 -1
- package/docs/changelog/2025-05-08-desktop-app.mdx +2 -2
- package/docs/changelog/2025-05-08-desktop-app.zh-CN.mdx +2 -2
- package/docs/changelog/2025-06-08-claude-4.mdx +1 -1
- package/docs/changelog/2025-06-08-claude-4.zh-CN.mdx +1 -1
- package/docs/changelog/2025-07-08-mcp-market.mdx +1 -1
- package/docs/changelog/2025-07-08-mcp-market.zh-CN.mdx +1 -1
- package/docs/changelog/2025-08-08-image-generation.mdx +1 -1
- package/docs/changelog/2025-08-08-image-generation.zh-CN.mdx +1 -1
- package/docs/changelog/2025-09-08-gemini.mdx +1 -1
- package/docs/changelog/2025-09-08-gemini.zh-CN.mdx +1 -1
- package/docs/changelog/2025-10-08-python.mdx +1 -1
- package/docs/changelog/2025-10-08-python.zh-CN.mdx +1 -1
- package/docs/changelog/2025-11-08-comfy-ui.mdx +1 -1
- package/docs/changelog/2025-11-08-comfy-ui.zh-CN.mdx +1 -1
- package/docs/changelog/2025-12-20-mcp.mdx +1 -1
- package/docs/changelog/2025-12-20-mcp.zh-CN.mdx +1 -1
- package/docs/development/basic/add-new-authentication-providers.zh-CN.mdx +1 -1
- package/docs/development/basic/add-new-image-model.mdx +3 -3
- package/docs/development/basic/add-new-image-model.zh-CN.mdx +3 -3
- package/docs/development/basic/chat-api.mdx +10 -10
- package/docs/development/basic/chat-api.zh-CN.mdx +10 -10
- package/docs/development/basic/feature-development.mdx +4 -4
- package/docs/development/basic/feature-development.zh-CN.mdx +4 -4
- package/docs/development/basic/setup-development.mdx +4 -4
- package/docs/development/basic/setup-development.zh-CN.mdx +4 -4
- package/docs/development/internationalization/add-new-locale.mdx +1 -1
- package/docs/development/internationalization/add-new-locale.zh-CN.mdx +1 -1
- package/docs/development/internationalization/internationalization-implementation.mdx +5 -5
- package/docs/development/internationalization/internationalization-implementation.zh-CN.mdx +5 -5
- package/docs/development/others/lighthouse.mdx +8 -8
- package/docs/development/others/lighthouse.zh-CN.mdx +8 -8
- package/docs/development/start.mdx +3 -3
- package/docs/development/start.zh-CN.mdx +3 -3
- package/docs/self-hosting/advanced/feature-flags.mdx +1 -1
- package/docs/self-hosting/advanced/feature-flags.zh-CN.mdx +1 -1
- package/docs/self-hosting/advanced/knowledge-base.mdx +2 -2
- package/docs/self-hosting/advanced/knowledge-base.zh-CN.mdx +2 -2
- package/docs/self-hosting/advanced/online-search.mdx +1 -1
- package/docs/self-hosting/advanced/online-search.zh-CN.mdx +1 -1
- package/docs/self-hosting/advanced/redis/upstash.mdx +3 -3
- package/docs/self-hosting/advanced/redis/upstash.zh-CN.mdx +3 -3
- package/docs/self-hosting/advanced/redis.mdx +6 -6
- package/docs/self-hosting/advanced/redis.zh-CN.mdx +6 -6
- package/docs/self-hosting/advanced/s3/rustfs.mdx +116 -116
- package/docs/self-hosting/advanced/s3/rustfs.zh-CN.mdx +116 -117
- package/docs/self-hosting/advanced/upstream-sync.zh-CN.mdx +5 -5
- package/docs/self-hosting/auth/email.mdx +70 -0
- package/docs/self-hosting/auth/email.zh-CN.mdx +70 -0
- package/docs/self-hosting/{advanced/auth → auth}/legacy.mdx +10 -10
- package/docs/self-hosting/{advanced/auth → auth}/legacy.zh-CN.mdx +5 -5
- package/docs/self-hosting/{advanced/auth → auth}/next-auth/casdoor.zh-CN.mdx +3 -3
- package/docs/self-hosting/{advanced/auth → auth}/next-auth/keycloak.zh-CN.mdx +2 -2
- package/docs/self-hosting/{advanced/auth → auth}/next-auth/logto.zh-CN.mdx +2 -2
- package/docs/self-hosting/{advanced/auth → auth}/providers/apple.mdx +6 -6
- package/docs/self-hosting/{advanced/auth → auth}/providers/apple.zh-CN.mdx +6 -6
- package/docs/self-hosting/{advanced/auth → auth}/providers/auth0.mdx +12 -12
- package/docs/self-hosting/{advanced/auth → auth}/providers/auth0.zh-CN.mdx +12 -12
- package/docs/self-hosting/{advanced/auth → auth}/providers/authelia.mdx +13 -13
- package/docs/self-hosting/{advanced/auth → auth}/providers/authelia.zh-CN.mdx +13 -13
- package/docs/self-hosting/{advanced/auth → auth}/providers/authentik.mdx +13 -13
- package/docs/self-hosting/{advanced/auth → auth}/providers/authentik.zh-CN.mdx +13 -13
- package/docs/self-hosting/{advanced/auth → auth}/providers/casdoor.mdx +8 -8
- package/docs/self-hosting/{advanced/auth → auth}/providers/casdoor.zh-CN.mdx +7 -7
- package/docs/self-hosting/{advanced/auth → auth}/providers/cloudflare-zero-trust.mdx +7 -7
- package/docs/self-hosting/{advanced/auth → auth}/providers/cloudflare-zero-trust.zh-CN.mdx +6 -6
- package/docs/self-hosting/{advanced/auth → auth}/providers/cognito.mdx +13 -13
- package/docs/self-hosting/{advanced/auth → auth}/providers/cognito.zh-CN.mdx +13 -13
- package/docs/self-hosting/{advanced/auth → auth}/providers/feishu.mdx +10 -10
- package/docs/self-hosting/{advanced/auth → auth}/providers/feishu.zh-CN.mdx +10 -10
- package/docs/self-hosting/{advanced/auth → auth}/providers/generic-oidc.mdx +12 -12
- package/docs/self-hosting/{advanced/auth → auth}/providers/generic-oidc.zh-CN.mdx +12 -12
- package/docs/self-hosting/{advanced/auth → auth}/providers/github.mdx +10 -10
- package/docs/self-hosting/{advanced/auth → auth}/providers/github.zh-CN.mdx +10 -10
- package/docs/self-hosting/{advanced/auth → auth}/providers/google.mdx +10 -10
- package/docs/self-hosting/{advanced/auth → auth}/providers/google.zh-CN.mdx +10 -10
- package/docs/self-hosting/{advanced/auth → auth}/providers/keycloak.mdx +11 -11
- package/docs/self-hosting/{advanced/auth → auth}/providers/keycloak.zh-CN.mdx +11 -11
- package/docs/self-hosting/{advanced/auth → auth}/providers/logto.mdx +8 -8
- package/docs/self-hosting/{advanced/auth → auth}/providers/logto.zh-CN.mdx +7 -7
- package/docs/self-hosting/{advanced/auth → auth}/providers/microsoft.mdx +11 -11
- package/docs/self-hosting/{advanced/auth → auth}/providers/microsoft.zh-CN.mdx +11 -11
- package/docs/self-hosting/{advanced/auth → auth}/providers/okta.mdx +13 -13
- package/docs/self-hosting/{advanced/auth → auth}/providers/okta.zh-CN.mdx +13 -13
- package/docs/self-hosting/auth/providers/password.mdx +112 -0
- package/docs/self-hosting/auth/providers/password.zh-CN.mdx +103 -0
- package/docs/self-hosting/{advanced/auth → auth}/providers/wechat.mdx +10 -10
- package/docs/self-hosting/{advanced/auth → auth}/providers/wechat.zh-CN.mdx +10 -10
- package/docs/self-hosting/{advanced/auth → auth}/providers/zitadel.mdx +13 -13
- package/docs/self-hosting/{advanced/auth → auth}/providers/zitadel.zh-CN.mdx +13 -13
- package/docs/self-hosting/{advanced/auth.mdx → auth.mdx} +24 -81
- package/docs/self-hosting/{advanced/auth.zh-CN.mdx → auth.zh-CN.mdx} +23 -80
- package/docs/self-hosting/environment-variables/auth.mdx +7 -0
- package/docs/self-hosting/environment-variables/auth.zh-CN.mdx +7 -0
- package/docs/self-hosting/environment-variables/basic.mdx +0 -7
- package/docs/self-hosting/environment-variables/basic.zh-CN.mdx +0 -7
- package/docs/self-hosting/environment-variables/redis.mdx +1 -1
- package/docs/self-hosting/environment-variables/redis.zh-CN.mdx +1 -1
- package/docs/self-hosting/environment-variables.mdx +1 -1
- package/docs/self-hosting/examples/azure-openai.mdx +0 -1
- package/docs/self-hosting/examples/azure-openai.zh-CN.mdx +0 -1
- package/docs/self-hosting/faq/no-v1-suffix.mdx +3 -3
- package/docs/self-hosting/faq/no-v1-suffix.zh-CN.mdx +3 -3
- package/docs/self-hosting/{advanced → migration/v2}/auth/clerk-to-betterauth.mdx +7 -7
- package/docs/self-hosting/{advanced → migration/v2}/auth/clerk-to-betterauth.zh-CN.mdx +7 -7
- package/docs/self-hosting/{advanced → migration/v2}/auth/migration-internals.mdx +2 -2
- package/docs/self-hosting/{advanced → migration/v2}/auth/migration-internals.zh-CN.mdx +2 -2
- package/docs/self-hosting/{advanced → migration/v2}/auth/nextauth-to-betterauth.mdx +11 -11
- package/docs/self-hosting/{advanced → migration/v2}/auth/nextauth-to-betterauth.zh-CN.mdx +11 -11
- package/docs/self-hosting/migration/v2/breaking-changes.mdx +1 -1
- package/docs/self-hosting/migration/v2/breaking-changes.zh-CN.mdx +1 -1
- package/docs/self-hosting/platform/docker-compose.zh-CN.mdx +4 -4
- package/docs/self-hosting/platform/docker.mdx +5 -5
- package/docs/self-hosting/platform/docker.zh-CN.mdx +10 -10
- package/docs/self-hosting/platform/dokploy.mdx +1 -1
- package/docs/self-hosting/platform/dokploy.zh-CN.mdx +5 -5
- package/docs/self-hosting/platform/sealos.mdx +12 -12
- package/docs/self-hosting/platform/sealos.zh-CN.mdx +17 -17
- package/docs/self-hosting/platform/vercel.zh-CN.mdx +4 -4
- package/docs/self-hosting/start.mdx +3 -3
- package/docs/self-hosting/start.zh-CN.mdx +4 -4
- package/locales/en-US/auth.json +2 -1
- package/locales/en-US/authError.json +1 -0
- package/locales/en-US/metadata.json +1 -1
- package/locales/zh-CN/auth.json +1 -0
- package/locales/zh-CN/authError.json +1 -0
- package/netlify.toml +0 -1
- package/package.json +1 -1
- package/packages/types/src/serverConfig.ts +1 -0
- package/src/app/[variants]/(auth)/auth-error/page.tsx +4 -2
- package/src/app/[variants]/(auth)/signin/SignInEmailStep.tsx +57 -50
- package/src/app/[variants]/(auth)/signin/SignInPasswordStep.tsx +1 -1
- package/src/app/[variants]/(auth)/signin/page.tsx +2 -0
- package/src/app/[variants]/(auth)/signin/useSignIn.ts +2 -0
- package/src/app/[variants]/(auth)/signup/[[...signup]]/page.tsx +7 -0
- package/src/envs/app.ts +0 -2
- package/src/envs/auth.ts +3 -0
- package/src/libs/better-auth/define-config.ts +1 -1
- package/src/libs/better-auth/sso/providers/feishu.ts +15 -14
- package/src/libs/better-auth/sso/providers/wechat.ts +6 -3
- package/src/libs/next/proxy/define-config.ts +1 -1
- package/src/locales/default/auth.ts +3 -1
- package/src/locales/default/authError.ts +2 -0
- package/src/locales/default/metadata.ts +1 -1
- package/src/server/globalConfig/index.ts +1 -0
- package/src/server/ld.ts +1 -1
- package/src/store/chat/slices/topic/action.ts +1 -1
- package/src/store/electron/actions/settings.ts +7 -7
- package/src/store/electron/actions/sync.ts +11 -11
- package/src/store/global/actions/general.ts +12 -12
- package/src/store/global/initialState.ts +11 -11
- package/src/store/global/selectors/clientDB.ts +1 -1
- package/src/store/global/selectors/systemStatus.ts +1 -1
- package/src/store/image/slices/generationConfig/action.ts +12 -12
- package/src/store/image/utils/size.ts +11 -11
- package/src/store/library/slices/ragEval/actions/dataset.ts +1 -1
- package/src/store/serverConfig/selectors.ts +1 -0
- package/src/store/session/slices/session/initialState.ts +6 -6
- package/src/store/session/slices/session/reducers.ts +1 -1
- package/src/store/session/slices/sessionGroup/initialState.ts +2 -2
- package/src/store/tool/slices/customPlugin/action.ts +2 -2
- package/src/store/tool/slices/oldStore/action.ts +5 -5
- package/src/store/userMemory/slices/preference/action.ts +6 -6
- /package/docs/self-hosting/{advanced/auth → auth}/clerk.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/clerk.zh-CN.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/auth0.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/auth0.zh-CN.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/authelia.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/authelia.zh-CN.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/authentik.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/authentik.zh-CN.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/casdoor.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/cloudflare-zero-trust.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/cloudflare-zero-trust.zh-CN.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/github.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/github.zh-CN.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/google.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/google.zh-CN.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/keycloak.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/logto.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/microsoft-entra-id.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/microsoft-entra-id.zh-CN.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/okta.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/okta.zh-CN.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/wechat.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/wechat.zh-CN.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/zitadel.mdx +0 -0
- /package/docs/self-hosting/{advanced/auth → auth}/next-auth/zitadel.zh-CN.mdx +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Deploy
|
|
2
|
+
title: Deploy LobeHub Database Version on Sealos
|
|
3
3
|
description: >-
|
|
4
4
|
Learn how to deploy LobeHub on Sealos with ease. Follow the provided steps to
|
|
5
5
|
set up LobeHub and start using it efficiently.
|
|
@@ -10,7 +10,7 @@ tags:
|
|
|
10
10
|
- Custom Domain Binding
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
# Deploying
|
|
13
|
+
# Deploying LobeHub Database Version on Sealos
|
|
14
14
|
|
|
15
15
|
<Callout type="info">
|
|
16
16
|
This article assumes that you are familiar with the basic principles and processes of deploying
|
|
@@ -25,9 +25,9 @@ The application on Sealos includes 4 services:
|
|
|
25
25
|
- Logto for authrization(need to deploy separately).
|
|
26
26
|
- PostgreSQL with Vector plugin for data storage and indexing.
|
|
27
27
|
- One object storage Bucket.
|
|
28
|
-
-
|
|
28
|
+
- LobeHub database version.
|
|
29
29
|
|
|
30
|
-
Here is the process for deploying the
|
|
30
|
+
Here is the process for deploying the LobeHub server database version on Sealos:
|
|
31
31
|
|
|
32
32
|
## Pre-Deployment Setup
|
|
33
33
|
|
|
@@ -53,17 +53,17 @@ Select `Next.js (App Router)` as the framework, then click the `Start building`
|
|
|
53
53
|
|
|
54
54
|

|
|
55
55
|
|
|
56
|
-
**Step 4**:In the pop-up window, fill in the application name as `
|
|
56
|
+
**Step 4**:In the pop-up window, fill in the application name as `LobeHub`, then click the `Create application` button. Next, do not fill in anything, just click the bottom `Finish and done` button to create it.
|
|
57
57
|
|
|
58
58
|

|
|
59
59
|
|
|
60
|
-
**Step 5**:In the `
|
|
60
|
+
**Step 5**:In the `LobeHub` application, find the following three parameters, which will be used later when deploying the LobeHub database version.
|
|
61
61
|
|
|
62
62
|

|
|
63
63
|
|
|
64
|
-
## Deploy
|
|
64
|
+
## Deploy LobeHub Database Version
|
|
65
65
|
|
|
66
|
-
**Step 1**:Click the button below to visit the
|
|
66
|
+
**Step 1**:Click the button below to visit the LobeHub database version application deployment page:
|
|
67
67
|
|
|
68
68
|
[](https://template.usw.sealos.io/deploy?templateName=lobe-chat-db)
|
|
69
69
|
|
|
@@ -75,13 +75,13 @@ Fill in the following three required parameters:
|
|
|
75
75
|
|
|
76
76
|
**Step 2**:Click the `Deploy App` button, after the deployment is complete, wait for all the components of the application to be in the "Running" state, click the application's "Details" button to enter the application details page.
|
|
77
77
|
|
|
78
|
-

|
|
79
79
|
|
|
80
80
|
**Step 3**:Find the public address, copy it, and use it later.
|
|
81
81
|
|
|
82
82
|
## Post-Deployment Configuration
|
|
83
83
|
|
|
84
|
-
**Step 1**:Enter the `Applications` page of Logto, find the `
|
|
84
|
+
**Step 1**:Enter the `Applications` page of Logto, find the `LobeHub` application, click to enter the application details page.
|
|
85
85
|
|
|
86
86
|
**Step 2**:In the `Settings` page, find the `Redirect URI` and `Post sign-out redirect URI` parameters, fill in the following values:
|
|
87
87
|
|
|
@@ -90,8 +90,8 @@ Fill in the following three required parameters:
|
|
|
90
90
|
|
|
91
91
|
**Step 3**:Click the `Save changes` button to save the configuration.
|
|
92
92
|
|
|
93
|
-
**Step 4**:Now, access the
|
|
93
|
+
**Step 4**:Now, access the LobeHub database version through `https://<lobe-chat-db-public-address>`, click the avatar in the upper left corner, and then click the \[Log in / Sign up] button.
|
|
94
94
|
|
|
95
95
|
**Step 5**:Next, you will be redirected to the Logto login page, click the \[Create account] button to register an account.
|
|
96
96
|
|
|
97
|
-
**Step 6**:After registration, you can use Logto to login to the
|
|
97
|
+
**Step 6**:After registration, you can use Logto to login to the LobeHub database version.
|
|
@@ -12,19 +12,19 @@ tags:
|
|
|
12
12
|
# 使用 Sealos 部署 LobeHub 数据库版
|
|
13
13
|
|
|
14
14
|
<Callout type="info">
|
|
15
|
-
本文假设你已经熟悉
|
|
16
|
-
服务器数据库版的部署基本原理和流程,因此只包含与核心环境变量配置相关的内容。如果你对
|
|
15
|
+
本文假设你已经熟悉 LobeHub
|
|
16
|
+
服务器数据库版的部署基本原理和流程,因此只包含与核心环境变量配置相关的内容。如果你对 LobeHub
|
|
17
17
|
服务器数据库版的部署原理不熟悉,请先参考[部署服务器数据库](/zh/docs/self-hosting/server-database)。
|
|
18
18
|
</Callout>
|
|
19
19
|
|
|
20
|
-
在 Sealos 的
|
|
20
|
+
在 Sealos 的 LobeHub 数据库版应用中总共包含有以下四个服务:
|
|
21
21
|
|
|
22
22
|
- Logto 提供身份校验(需额外部署)
|
|
23
23
|
- 带有 Vector 插件的 PostgreSQL 来做数据存储和向量化
|
|
24
24
|
- 一个对象存储 Bucket
|
|
25
25
|
- LobeHub Database 的实例
|
|
26
26
|
|
|
27
|
-
这里是在 Sealos 上部署
|
|
27
|
+
这里是在 Sealos 上部署 LobeHub 服务器数据库版的流程:
|
|
28
28
|
|
|
29
29
|
## 预部署配置
|
|
30
30
|
|
|
@@ -57,18 +57,18 @@ tags:
|
|
|
57
57
|
|
|
58
58
|

|
|
59
59
|
|
|
60
|
-
在弹窗中填写应用的名称为 `
|
|
60
|
+
在弹窗中填写应用的名称为 `LobeHub`,然后点击 `Create application` 按钮。接下来啥也不用填,直接点击底部的 `Finish and done` 按钮就创建完成了。
|
|
61
61
|
|
|
62
62
|

|
|
63
63
|
|
|
64
|
-
在 `
|
|
64
|
+
在 `LobeHub` 应用中找到以下三个参数,后面部署 LobeHub 数据库版时需要用到。
|
|
65
65
|
|
|
66
66
|

|
|
67
67
|
</Steps>
|
|
68
68
|
|
|
69
|
-
## 部署
|
|
69
|
+
## 部署 LobeHub 数据库版
|
|
70
70
|
|
|
71
|
-
点击下方按钮访问
|
|
71
|
+
点击下方按钮访问 LobeHub 数据库版应用部署页面:
|
|
72
72
|
|
|
73
73
|
[](https://template.hzh.sealos.run/deploy?templateName=lobe-chat-db)
|
|
74
74
|
|
|
@@ -80,33 +80,33 @@ tags:
|
|
|
80
80
|
|
|
81
81
|
点击【部署】按钮,部署完成后,等待应用的所有组件状态都变成 “运行中”,点击应用的【详情】按钮,进入应用详情页面。
|
|
82
82
|
|
|
83
|
-

|
|
84
84
|
|
|
85
85
|
找到公网地址,复制下来,后面需要用到。
|
|
86
86
|
|
|
87
|
-

|
|
88
88
|
|
|
89
89
|
## 部署后配置
|
|
90
90
|
|
|
91
|
-
进入 Logto 的 `Applications` 页面,找到 `
|
|
91
|
+
进入 Logto 的 `Applications` 页面,找到 `LobeHub` 应用,点击进入应用详情页面。
|
|
92
92
|
|
|
93
93
|
在 `Settings` 页面中找到 “Redirect URI” 和 “Post sign-out redirect URI” 这两个参数,填入以下值:
|
|
94
94
|
|
|
95
95
|
- Redirect URI:`https://<lobe-chat-db-public-address>/api/auth/callback/logto`
|
|
96
96
|
- Post sign-out redirect URI:`https://<lobe-chat-db-public-address>`
|
|
97
97
|
|
|
98
|
-
其中 `https://<lobe-chat-db-public-address>` 为
|
|
98
|
+
其中 `https://<lobe-chat-db-public-address>` 为 LobeHub 数据库版的公网地址。
|
|
99
99
|
|
|
100
100
|
填完之后点击 `Save changes` 按钮保存配置。
|
|
101
101
|
|
|
102
|
-
现在通过 `https://<lobe-chat-db-public-address>` 访问
|
|
102
|
+
现在通过 `https://<lobe-chat-db-public-address>` 访问 LobeHub 数据库版,点击左上角的头像,然后点击【登录 / 注册】按钮:
|
|
103
103
|
|
|
104
|
-

|
|
105
105
|
|
|
106
106
|
接下来会跳转到 Logto 的登录页面,点击【注册】注册一个账号。
|
|
107
107
|
|
|
108
|
-

|
|
109
109
|
|
|
110
|
-
注册完成后,即可使用 Logto 登录
|
|
110
|
+
注册完成后,即可使用 Logto 登录 LobeHub 数据库版。
|
|
111
111
|
|
|
112
|
-

|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: 在 Vercel 上部署 LobeHub
|
|
3
|
-
description: 本文详细介绍如何在 Vercel
|
|
2
|
+
title: 在 Vercel 上部署 LobeHub
|
|
3
|
+
description: 本文详细介绍如何在 Vercel 中部署 LobeHub,包括数据库配置、身份验证服务配置和 S3 存储服务的设置步骤。
|
|
4
4
|
tags:
|
|
5
5
|
- 服务端数据库
|
|
6
6
|
- Postgres
|
|
@@ -12,9 +12,9 @@ tags:
|
|
|
12
12
|
- 环境变量配置
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
-
# 在 Vercel
|
|
15
|
+
# 在 Vercel 上部署 LobeHub
|
|
16
16
|
|
|
17
|
-
本文将详细介绍如何在 Vercel
|
|
17
|
+
本文将详细介绍如何在 Vercel 中部署 LobeHub,包括: 1)数据库配置;2)身份验证服务配置;3) S3 存储服务的设置步骤。
|
|
18
18
|
|
|
19
19
|
<Callout type={'warning'}>
|
|
20
20
|
进行后续操作前,请务必确认以下事项:
|
|
@@ -4,7 +4,7 @@ description: >-
|
|
|
4
4
|
Explore multiple deployment platforms like Vercel, Docker, Docker Compose, and
|
|
5
5
|
more to deploy LobeHub. Choose the platform that best suits your needs.
|
|
6
6
|
tags:
|
|
7
|
-
-
|
|
7
|
+
- LobeHub
|
|
8
8
|
- Deployment Platform
|
|
9
9
|
- Vercel
|
|
10
10
|
- Docker
|
|
@@ -12,8 +12,8 @@ tags:
|
|
|
12
12
|
- Alibaba Cloud
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
-
# Build Your Own
|
|
15
|
+
# Build Your Own LobeHub
|
|
16
16
|
|
|
17
|
-
LobeHub supports various deployment platforms, including Vercel, Docker, and Docker Compose. You can choose a deployment platform that suits you to build your own
|
|
17
|
+
LobeHub supports various deployment platforms, including Vercel, Docker, and Docker Compose. You can choose a deployment platform that suits you to build your own LobeHub.
|
|
18
18
|
|
|
19
19
|
<PlatformCards urlPrefix={'platform'} />
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: 构建属于自己的 LobeHub - 自选部署平台
|
|
3
3
|
description: >-
|
|
4
|
-
选择适合自己的部署平台,构建个性化的
|
|
4
|
+
选择适合自己的部署平台,构建个性化的 LobeHub。支持 Docker、Docker
|
|
5
5
|
Compose、Netlify、Railway、Repocloud、Sealos、Vercel 和 Zeabur 部署。
|
|
6
6
|
tags:
|
|
7
|
-
-
|
|
7
|
+
- LobeHub
|
|
8
8
|
- 部署平台
|
|
9
9
|
- Docker
|
|
10
10
|
- Netlify
|
|
@@ -16,8 +16,8 @@ tags:
|
|
|
16
16
|
- 腾讯轻量云
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
# 构建属于自己的
|
|
19
|
+
# 构建属于自己的 LobeHub
|
|
20
20
|
|
|
21
|
-
LobeHub 支持多种部署平台,包括 Vercel、Docker、 Docker Compose 、阿里云计算巢 和腾讯轻量云 等,你可以选择适合自己的部署平台进行部署,构建属于自己的
|
|
21
|
+
LobeHub 支持多种部署平台,包括 Vercel、Docker、 Docker Compose 、阿里云计算巢 和腾讯轻量云 等,你可以选择适合自己的部署平台进行部署,构建属于自己的 LobeHub。
|
|
22
22
|
|
|
23
23
|
<PlatformCards urlPrefix={'platform'} />
|
package/locales/en-US/auth.json
CHANGED
|
@@ -98,6 +98,7 @@
|
|
|
98
98
|
"betterAuth.signin.signupLink": "Sign up now",
|
|
99
99
|
"betterAuth.signin.socialError": "Social sign in failed, please try again",
|
|
100
100
|
"betterAuth.signin.socialOnlyHint": "This email was registered via a third-party social account. Sign in with that provider, or",
|
|
101
|
+
"betterAuth.signin.ssoOnlyNoProviders": "Email registration is disabled and no SSO providers are configured. Please contact your administrator.",
|
|
101
102
|
"betterAuth.signin.submit": "Sign In",
|
|
102
103
|
"betterAuth.signup.confirmPasswordPlaceholder": "Confirm your password",
|
|
103
104
|
"betterAuth.signup.emailPlaceholder": "Enter your email address",
|
|
@@ -192,7 +193,7 @@
|
|
|
192
193
|
"profile.usernameRule": "Username can only contain letters, numbers, or underscores",
|
|
193
194
|
"profile.usernameUpdateFailed": "Failed to update username, please try again later",
|
|
194
195
|
"signin.subtitle": "Sign up or log in to your {{appName}} account",
|
|
195
|
-
"signin.title": "Agent
|
|
196
|
+
"signin.title": "Agent teammates that grow with you",
|
|
196
197
|
"signout": "Log Out",
|
|
197
198
|
"signup": "Sign Up",
|
|
198
199
|
"stats.aiheatmaps": "Activity Index",
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
"codes.DELETED_ACCOUNT_EMAIL": "This email has been associated with a deleted account and cannot be used for registration",
|
|
9
9
|
"codes.EMAIL_CAN_NOT_BE_UPDATED": "Email cannot be updated for this account",
|
|
10
10
|
"codes.EMAIL_NOT_ALLOWED": "Email not allowed for registration",
|
|
11
|
+
"codes.EMAIL_NOT_FOUND": "No email associated with this account. Please check if your account has an email bound.",
|
|
11
12
|
"codes.EMAIL_NOT_VERIFIED": "Please verify your email first",
|
|
12
13
|
"codes.FAILED_TO_CREATE_SESSION": "Failed to create session",
|
|
13
14
|
"codes.FAILED_TO_CREATE_USER": "Failed to create user",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"changelog.description": "Stay updated on the new features and improvements of {{appName}}",
|
|
3
3
|
"changelog.title": "Changelog",
|
|
4
4
|
"chat.description": "{{appName}} is a work-and-lifestyle space to find, build, and collaborate with agent teams that grow with you.",
|
|
5
|
-
"chat.title": "{{appName}} · Agent
|
|
5
|
+
"chat.title": "{{appName}} · Agent teammates that grow with you",
|
|
6
6
|
"discover.assistants.description": "Content, Q&A, images, video, voice, workflows—browse and add Agents from the Community.",
|
|
7
7
|
"discover.assistants.title": "Agent Community",
|
|
8
8
|
"discover.description": "Explore Agents, Skills, Providers, models, and MCP Servers.",
|
package/locales/zh-CN/auth.json
CHANGED
|
@@ -98,6 +98,7 @@
|
|
|
98
98
|
"betterAuth.signin.signupLink": "创建账号",
|
|
99
99
|
"betterAuth.signin.socialError": "登录遇到了问题,请重试",
|
|
100
100
|
"betterAuth.signin.socialOnlyHint": "此邮箱是通过第三方社交账号注册的。请使用该服务提供商登录,或",
|
|
101
|
+
"betterAuth.signin.ssoOnlyNoProviders": "邮箱注册已禁用,且未配置 SSO 提供商。请联系管理员。",
|
|
101
102
|
"betterAuth.signin.submit": "登录",
|
|
102
103
|
"betterAuth.signup.confirmPasswordPlaceholder": "请确认密码",
|
|
103
104
|
"betterAuth.signup.emailPlaceholder": "请输入邮箱地址",
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
"codes.DELETED_ACCOUNT_EMAIL": "该邮箱已关联至已删除的账户,无法用于注册",
|
|
9
9
|
"codes.EMAIL_CAN_NOT_BE_UPDATED": "当前邮箱无法修改,如需更换,请联系支持",
|
|
10
10
|
"codes.EMAIL_NOT_ALLOWED": "该邮箱不允许用于注册",
|
|
11
|
+
"codes.EMAIL_NOT_FOUND": "登录账号未关联邮箱,请检查账号是否已绑定邮箱",
|
|
11
12
|
"codes.EMAIL_NOT_VERIFIED": "邮箱还未验证,请先查收验证邮件完成验证",
|
|
12
13
|
"codes.FAILED_TO_CREATE_SESSION": "会话创建遇到了问题。你可以先重试;如仍失败,请检查网络或稍后再试",
|
|
13
14
|
"codes.FAILED_TO_CREATE_USER": "创建用户遇到了问题。你可以稍后再试",
|
package/netlify.toml
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lobehub/lobehub",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.3",
|
|
4
4
|
"description": "LobeHub - an open-source,comprehensive AI Agent framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"framework",
|
|
@@ -49,6 +49,7 @@ export type ServerLanguageModel = Partial<Record<GlobalLLMProviderKey, ServerMod
|
|
|
49
49
|
export interface GlobalServerConfig {
|
|
50
50
|
aiProvider: ServerLanguageModel;
|
|
51
51
|
defaultAgent?: PartialDeep<UserDefaultAgent>;
|
|
52
|
+
disableEmailPassword?: boolean;
|
|
52
53
|
enableBusinessFeatures?: boolean;
|
|
53
54
|
enableEmailVerification?: boolean;
|
|
54
55
|
enableKlavis?: boolean;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { SiDiscord } from '@icons-pack/react-simple-icons';
|
|
4
4
|
import { SOCIAL_URL } from '@lobechat/business-const';
|
|
5
|
-
import {
|
|
5
|
+
import { Button, Flexbox, Icon, Text } from '@lobehub/ui';
|
|
6
6
|
import { cssVar } from 'antd-style';
|
|
7
7
|
import { parseAsString, useQueryState } from 'nuqs';
|
|
8
8
|
import { memo } from 'react';
|
|
@@ -45,7 +45,9 @@ const AuthErrorPage = memo(() => {
|
|
|
45
45
|
subtitle={description}
|
|
46
46
|
title={t('title')}
|
|
47
47
|
>
|
|
48
|
-
<
|
|
48
|
+
<Text style={{ fontFamily: cssVar.fontFamilyCode }} type={'secondary'}>
|
|
49
|
+
ErrorCode: {error || 'UNKNOWN'}
|
|
50
|
+
</Text>
|
|
49
51
|
</AuthCard>
|
|
50
52
|
);
|
|
51
53
|
});
|
|
@@ -24,6 +24,7 @@ export const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
|
24
24
|
export const USERNAME_REGEX = /^\w+$/;
|
|
25
25
|
|
|
26
26
|
export interface SignInEmailStepProps {
|
|
27
|
+
disableEmailPassword?: boolean;
|
|
27
28
|
form: FormInstance<{ email: string }>;
|
|
28
29
|
isSocialOnly: boolean;
|
|
29
30
|
loading: boolean;
|
|
@@ -36,6 +37,7 @@ export interface SignInEmailStepProps {
|
|
|
36
37
|
}
|
|
37
38
|
|
|
38
39
|
export const SignInEmailStep = ({
|
|
40
|
+
disableEmailPassword,
|
|
39
41
|
form,
|
|
40
42
|
isSocialOnly,
|
|
41
43
|
loading,
|
|
@@ -101,7 +103,7 @@ export const SignInEmailStep = ({
|
|
|
101
103
|
<AuthCard
|
|
102
104
|
footer={footer}
|
|
103
105
|
subtitle={t('signin.subtitle', { appName: BRANDING_NAME })}
|
|
104
|
-
title={'Agent
|
|
106
|
+
title={'Agent teammates that grow with you'}
|
|
105
107
|
>
|
|
106
108
|
{!serverConfigInit && (
|
|
107
109
|
<Flexbox gap={12}>
|
|
@@ -133,58 +135,63 @@ export const SignInEmailStep = ({
|
|
|
133
135
|
{getProviderLabel(provider)}
|
|
134
136
|
</Button>
|
|
135
137
|
))}
|
|
136
|
-
{divider}
|
|
138
|
+
{!disableEmailPassword && divider}
|
|
137
139
|
</Flexbox>
|
|
138
140
|
)}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
{ message: t('betterAuth.errors.emailRequired'), required: true },
|
|
148
|
-
{
|
|
149
|
-
validator: (_, value) => {
|
|
150
|
-
if (!value) return Promise.resolve();
|
|
151
|
-
const trimmedValue = (value as string).trim();
|
|
152
|
-
if (EMAIL_REGEX.test(trimmedValue) || USERNAME_REGEX.test(trimmedValue)) {
|
|
153
|
-
return Promise.resolve();
|
|
154
|
-
}
|
|
155
|
-
return Promise.reject(new Error(t('betterAuth.errors.emailInvalid')));
|
|
156
|
-
},
|
|
157
|
-
},
|
|
158
|
-
]}
|
|
159
|
-
style={{ marginBottom: 0 }}
|
|
141
|
+
{serverConfigInit && disableEmailPassword && oAuthSSOProviders.length === 0 && (
|
|
142
|
+
<Alert description={t('betterAuth.signin.ssoOnlyNoProviders')} showIcon type="warning" />
|
|
143
|
+
)}
|
|
144
|
+
{!disableEmailPassword && (
|
|
145
|
+
<Form
|
|
146
|
+
form={form}
|
|
147
|
+
layout="vertical"
|
|
148
|
+
onFinish={(values) => onCheckUser(values as { email: string })}
|
|
160
149
|
>
|
|
161
|
-
<
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
150
|
+
<Form.Item
|
|
151
|
+
name="email"
|
|
152
|
+
rules={[
|
|
153
|
+
{ message: t('betterAuth.errors.emailRequired'), required: true },
|
|
154
|
+
{
|
|
155
|
+
validator: (_, value) => {
|
|
156
|
+
if (!value) return Promise.resolve();
|
|
157
|
+
const trimmedValue = (value as string).trim();
|
|
158
|
+
if (EMAIL_REGEX.test(trimmedValue) || USERNAME_REGEX.test(trimmedValue)) {
|
|
159
|
+
return Promise.resolve();
|
|
160
|
+
}
|
|
161
|
+
return Promise.reject(new Error(t('betterAuth.errors.emailInvalid')));
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
]}
|
|
165
|
+
style={{ marginBottom: 0 }}
|
|
166
|
+
>
|
|
167
|
+
<Input
|
|
168
|
+
placeholder={t('betterAuth.signin.emailPlaceholder')}
|
|
169
|
+
prefix={
|
|
170
|
+
<Icon
|
|
171
|
+
icon={Mail}
|
|
172
|
+
style={{
|
|
173
|
+
marginInline: 6,
|
|
174
|
+
}}
|
|
175
|
+
/>
|
|
176
|
+
}
|
|
177
|
+
ref={emailInputRef}
|
|
178
|
+
size="large"
|
|
179
|
+
style={{
|
|
180
|
+
padding: 6,
|
|
181
|
+
}}
|
|
182
|
+
suffix={
|
|
183
|
+
<Button
|
|
184
|
+
icon={ChevronRight}
|
|
185
|
+
loading={loading}
|
|
186
|
+
onClick={() => form.submit()}
|
|
187
|
+
title={t('betterAuth.signin.nextStep')}
|
|
188
|
+
variant={'filled'}
|
|
189
|
+
/>
|
|
190
|
+
}
|
|
191
|
+
/>
|
|
192
|
+
</Form.Item>
|
|
193
|
+
</Form>
|
|
194
|
+
)}
|
|
188
195
|
{isSocialOnly && (
|
|
189
196
|
<Alert
|
|
190
197
|
description={
|
|
@@ -10,6 +10,7 @@ import { useSignIn } from './useSignIn';
|
|
|
10
10
|
|
|
11
11
|
const SignInPage = () => {
|
|
12
12
|
const {
|
|
13
|
+
disableEmailPassword,
|
|
13
14
|
email,
|
|
14
15
|
form,
|
|
15
16
|
handleBackToEmail,
|
|
@@ -29,6 +30,7 @@ const SignInPage = () => {
|
|
|
29
30
|
<Suspense fallback={<Loading debugId={'Signin'} />}>
|
|
30
31
|
{step === 'email' ? (
|
|
31
32
|
<SignInEmailStep
|
|
33
|
+
disableEmailPassword={disableEmailPassword}
|
|
32
34
|
form={form as any}
|
|
33
35
|
isSocialOnly={isSocialOnly}
|
|
34
36
|
loading={loading}
|
|
@@ -32,6 +32,7 @@ export const useSignIn = () => {
|
|
|
32
32
|
const router = useRouter();
|
|
33
33
|
const searchParams = useSearchParams();
|
|
34
34
|
const enableMagicLink = useServerConfigStore(serverConfigSelectors.enableMagicLink);
|
|
35
|
+
const disableEmailPassword = useServerConfigStore(serverConfigSelectors.disableEmailPassword);
|
|
35
36
|
const [form] = Form.useForm<SignInFormValues>();
|
|
36
37
|
const [loading, setLoading] = useState(false);
|
|
37
38
|
const [socialLoading, setSocialLoading] = useState<string | null>(null);
|
|
@@ -242,6 +243,7 @@ export const useSignIn = () => {
|
|
|
242
243
|
};
|
|
243
244
|
|
|
244
245
|
return {
|
|
246
|
+
disableEmailPassword,
|
|
245
247
|
email,
|
|
246
248
|
form,
|
|
247
249
|
handleBackToEmail,
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { redirect } from 'next/navigation';
|
|
2
|
+
|
|
3
|
+
import { authEnv } from '@/envs/auth';
|
|
1
4
|
import { metadataModule } from '@/server/metadata';
|
|
2
5
|
import { translation } from '@/server/translation';
|
|
3
6
|
import { type DynamicLayoutProps } from '@/types/next';
|
|
@@ -17,6 +20,10 @@ export const generateMetadata = async (props: DynamicLayoutProps) => {
|
|
|
17
20
|
};
|
|
18
21
|
|
|
19
22
|
const Page = () => {
|
|
23
|
+
if (authEnv.AUTH_DISABLE_EMAIL_PASSWORD) {
|
|
24
|
+
redirect('/signin');
|
|
25
|
+
}
|
|
26
|
+
|
|
20
27
|
return <BetterAuthSignUpForm />;
|
|
21
28
|
};
|
|
22
29
|
|
package/src/envs/app.ts
CHANGED
|
@@ -52,7 +52,6 @@ export const getAppConfig = () => {
|
|
|
52
52
|
INTERNAL_APP_URL: z.string().optional(),
|
|
53
53
|
VERCEL_EDGE_CONFIG: z.string().optional(),
|
|
54
54
|
MIDDLEWARE_REWRITE_THROUGH_LOCAL: z.boolean().optional(),
|
|
55
|
-
ENABLE_AUTH_PROTECTION: z.boolean().optional(),
|
|
56
55
|
|
|
57
56
|
CDN_USE_GLOBAL: z.boolean().optional(),
|
|
58
57
|
CUSTOM_FONT_FAMILY: z.string().optional(),
|
|
@@ -107,7 +106,6 @@ export const getAppConfig = () => {
|
|
|
107
106
|
APP_URL,
|
|
108
107
|
INTERNAL_APP_URL,
|
|
109
108
|
MIDDLEWARE_REWRITE_THROUGH_LOCAL: process.env.MIDDLEWARE_REWRITE_THROUGH_LOCAL === '1',
|
|
110
|
-
ENABLE_AUTH_PROTECTION: process.env.ENABLE_AUTH_PROTECTION === '1',
|
|
111
109
|
|
|
112
110
|
CUSTOM_FONT_FAMILY: process.env.CUSTOM_FONT_FAMILY,
|
|
113
111
|
CUSTOM_FONT_URL: process.env.CUSTOM_FONT_URL,
|
package/src/envs/auth.ts
CHANGED
|
@@ -13,6 +13,7 @@ declare global {
|
|
|
13
13
|
AUTH_SSO_PROVIDERS?: string;
|
|
14
14
|
AUTH_TRUSTED_ORIGINS?: string;
|
|
15
15
|
AUTH_ALLOWED_EMAILS?: string;
|
|
16
|
+
AUTH_DISABLE_EMAIL_PASSWORD?: string;
|
|
16
17
|
|
|
17
18
|
// ===== Auth Provider Credentials ===== //
|
|
18
19
|
AUTH_GOOGLE_ID?: string;
|
|
@@ -112,6 +113,7 @@ export const getAuthConfig = () => {
|
|
|
112
113
|
AUTH_EMAIL_VERIFICATION: z.boolean().optional().default(false),
|
|
113
114
|
AUTH_ENABLE_MAGIC_LINK: z.boolean().optional().default(false),
|
|
114
115
|
AUTH_ALLOWED_EMAILS: z.string().optional(),
|
|
116
|
+
AUTH_DISABLE_EMAIL_PASSWORD: z.boolean().optional().default(false),
|
|
115
117
|
|
|
116
118
|
AUTH_GOOGLE_ID: z.string().optional(),
|
|
117
119
|
AUTH_GOOGLE_SECRET: z.string().optional(),
|
|
@@ -199,6 +201,7 @@ export const getAuthConfig = () => {
|
|
|
199
201
|
AUTH_SSO_PROVIDERS: process.env.AUTH_SSO_PROVIDERS,
|
|
200
202
|
AUTH_TRUSTED_ORIGINS: process.env.AUTH_TRUSTED_ORIGINS,
|
|
201
203
|
AUTH_ALLOWED_EMAILS: process.env.AUTH_ALLOWED_EMAILS,
|
|
204
|
+
AUTH_DISABLE_EMAIL_PASSWORD: process.env.AUTH_DISABLE_EMAIL_PASSWORD === '1',
|
|
202
205
|
|
|
203
206
|
// Cognito provider specific env vars
|
|
204
207
|
AUTH_COGNITO_DOMAIN: process.env.AUTH_COGNITO_DOMAIN,
|
|
@@ -107,7 +107,7 @@ export function defineConfig(customOptions: CustomBetterAuthOptions) {
|
|
|
107
107
|
|
|
108
108
|
emailAndPassword: {
|
|
109
109
|
autoSignIn: true,
|
|
110
|
-
enabled:
|
|
110
|
+
enabled: !authEnv.AUTH_DISABLE_EMAIL_PASSWORD,
|
|
111
111
|
maxPasswordLength: 64,
|
|
112
112
|
minPasswordLength: 8,
|
|
113
113
|
requireEmailVerification: authEnv.AUTH_EMAIL_VERIFICATION,
|