Compare commits

...

2 Commits

3 changed files with 31 additions and 13 deletions

View File

@ -1,7 +1,8 @@
# assets-ai 环境变量(本地开发)
DATABASE_PATH=./data/assets.db DATABASE_PATH=./data/assets.db
JWT_SECRET=your-secret-key-change-in-production JWT_SECRET=dev-jwt-secret-local
COOKIE_DOMAIN=
NODE_ENV=development NODE_ENV=development
# ⚠️ 仅限本地开发环境(自签名证书),生产环境禁止设置此变量
NODE_TLS_REJECT_UNAUTHORIZED=0 NODE_TLS_REJECT_UNAUTHORIZED=0
# LDAP 配置 # LDAP 配置
@ -9,15 +10,12 @@ LDAP_URL=ldap://localhost:3890
LDAP_BASE_DN=dc=tlyq,dc=ai LDAP_BASE_DN=dc=tlyq,dc=ai
LDAP_ADMIN_DN=uid=admin,ou=people,dc=tlyq,dc=ai LDAP_ADMIN_DN=uid=admin,ou=people,dc=tlyq,dc=ai
# issue-ai API 配置(用于故障历史功能) # OIDC 配置
# NEXT_PUBLIC_ 前缀:构建时内嵌到客户端 JS云上必须通过 deploy-ai.sh 设置 AUTHELIA_URL=http://127.0.0.1:6180
# 本地开发http://localhost:6176/tickets
# 云上生产https://issue.tlyq.ai/tickets
NEXT_PUBLIC_ISSUE_URL=http://localhost:6176/tickets
ISSUE_API_URL=http://localhost:6176/api
# OIDC 配置SSO 统一认证)
AUTHELIA_URL=https://sso.tlyq.ai
OIDC_CLIENT_ID=assets-oidc OIDC_CLIENT_ID=assets-oidc
OIDC_CLIENT_SECRET=change-me-to-hashed-secret OIDC_CLIENT_SECRET=<见 Authelia 配置>
OIDC_REDIRECT_URI=http://localhost:6177/api/auth/callback OIDC_REDIRECT_URI=http://127.0.0.1:6177/api/auth/callback
# 跨服务调用
ISSUE_API_URL=http://localhost:6176/api
NEXT_PUBLIC_ISSUE_URL=http://localhost:6176/tickets

15
config/.env.prod Normal file
View File

@ -0,0 +1,15 @@
# assets-ai 生产环境配置(模板)
DATABASE_PATH=/app/data/assets.db
JWT_SECRET=__JWT_SECRET__
COOKIE_DOMAIN=.tlyq.ai
NODE_ENV=production
NODE_TLS_REJECT_UNAUTHORIZED=0
LDAP_URL=ldap://lldap:3890
LDAP_BASE_DN=dc=tlyq,dc=ai
LDAP_ADMIN_DN=uid=admin,ou=people,dc=tlyq,dc=ai
AUTHELIA_URL=https://sso.tlyq.ai
OIDC_CLIENT_ID=assets-oidc
OIDC_CLIENT_SECRET=__OIDC_CLIENT_SECRET__
OIDC_REDIRECT_URI=https://assets.tlyq.ai/api/auth/callback
ISSUE_API_URL=http://issue-ai:3000/api
NEXT_PUBLIC_ISSUE_URL=https://issue.tlyq.ai/tickets

View File

@ -38,6 +38,11 @@ export function LoginForm() {
</button> </button>
<p className="text-center text-xs text-slate-400 mb-3"> SSO </p> <p className="text-center text-xs text-slate-400 mb-3"> SSO </p>
<p className="text-center mb-2">
<button onClick={() => { window.location.href = '/api/auth/login/oidc?switch=1' }} className="text-xs text-slate-400 hover:text-slate-600 underline">
使
</button>
</p>
<p className="text-center"> <p className="text-center">
<button onClick={() => setShowLdapForm(true)} className="text-xs text-slate-400 hover:text-slate-600 underline"> <button onClick={() => setShowLdapForm(true)} className="text-xs text-slate-400 hover:text-slate-600 underline">
使 LDAP 使 LDAP