fix: DevTools 读取 .env 管理员凭据 + 统一 main.go 密码 fallback
两个问题导致用户无法用 .env 中的管理员账户登录: 1. DevTools 未读取 backend/.env,始终传 admin/cyrene-dev-admin 给 gateway 2. gateway main.go 中创建管理员时独立读取 os.Getenv 并以 "admin123" 为 fallback,与 config.go 的 cfg.AdminPassword 不一致 修复: - config.js: 启动时加载 backend/.env 到 process.env (不覆盖已有环境变量) - main.go: 移除独立的 os.Getenv 读取,统一使用 cfg.AdminPassword Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -64,11 +64,7 @@ func main() {
|
||||
log.Printf("⚠ 查询管理员用户失败: %v", err)
|
||||
} else if existingAdmin == nil {
|
||||
log.Printf("🔧 未找到管理员用户,创建默认 %s (username: %s)...", cfg.AdminUsername, cfg.AdminUsername)
|
||||
// 优先使用环境变量 ADMIN_PASSWORD,否则回退到 "admin123"
|
||||
defaultAdminPassword := os.Getenv("ADMIN_PASSWORD")
|
||||
if defaultAdminPassword == "" {
|
||||
defaultAdminPassword = "admin123"
|
||||
}
|
||||
defaultAdminPassword := cfg.AdminPassword
|
||||
passwordHash, err := bcrypt.GenerateFromPassword([]byte(defaultAdminPassword), bcrypt.DefaultCost)
|
||||
if err != nil {
|
||||
log.Printf("⚠ 管理员密码哈希生成失败: %v", err)
|
||||
|
||||
@@ -14,6 +14,29 @@ const ROOT = path.resolve(__dirname, '../..');
|
||||
|
||||
const isWin = os.platform() === 'win32';
|
||||
|
||||
// 读取 backend/.env 文件,将值合并到 process.env(不覆盖已有的环境变量)
|
||||
// 这样 DevTools 启动各服务时能传递用户配置的凭据
|
||||
function loadEnvFile() {
|
||||
const envPath = path.join(ROOT, 'backend', '.env');
|
||||
try {
|
||||
const content = fs.readFileSync(envPath, 'utf-8');
|
||||
for (const line of content.split('\n')) {
|
||||
const trimmed = line.trim();
|
||||
if (!trimmed || trimmed.startsWith('#')) continue;
|
||||
const eqIdx = trimmed.indexOf('=');
|
||||
if (eqIdx === -1) continue;
|
||||
const key = trimmed.substring(0, eqIdx).trim();
|
||||
const val = trimmed.substring(eqIdx + 1).trim();
|
||||
if (key && val !== undefined) {
|
||||
process.env[key] = process.env[key] || val;
|
||||
}
|
||||
}
|
||||
} catch {
|
||||
// .env 文件不存在,使用默认值
|
||||
}
|
||||
}
|
||||
loadEnvFile();
|
||||
|
||||
/** 跨平台 Go 二进制路径 */
|
||||
function findGoBin() {
|
||||
// 优先使用环境变量
|
||||
|
||||
Reference in New Issue
Block a user