feat(auth): 实现管理员密码修改功能和安全增强

- 添加密码修改API端点,支持当前密码验证和新密码更新
- 将密码存储从环境变量迁移到数据库,使用bcrypt加密
- 新增admin_settings表用于存储密码哈希和系统设置
- 添加密码强度验证和错误处理逻辑
- 更新文档说明密码管理功能和默认凭据
This commit is contained in:
Lannamokia
2025-10-21 20:54:21 +08:00
parent 803e6cdaee
commit 990aeaa1e0
6 changed files with 427 additions and 4 deletions
+24 -1
View File
@@ -40,9 +40,32 @@ VALUES
('MACHINE003', TRUE, 'TEST')
ON CONFLICT (machine_id) DO NOTHING;
-- 创建管理员密码表
CREATE TABLE IF NOT EXISTS admin_settings (
id SERIAL PRIMARY KEY,
setting_key VARCHAR(255) UNIQUE NOT NULL,
setting_value TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 为admin_settings表创建更新时间触发器
DROP TRIGGER IF EXISTS update_admin_settings_updated_at ON admin_settings;
CREATE TRIGGER update_admin_settings_updated_at
BEFORE UPDATE ON admin_settings
FOR EACH ROW
EXECUTE FUNCTION update_updated_at_column();
-- 插入默认管理员密码 (admin123的bcrypt哈希)
INSERT INTO admin_settings (setting_key, setting_value)
VALUES ('admin_password_hash', '$2a$10$uTXfi1JIapQn08aVZL1mKO9B6jU8GgOmW6bIuMP.pTk/M.pxf86Su')
ON CONFLICT (setting_key) DO NOTHING;
-- 创建索引以提高查询性能
CREATE INDEX IF NOT EXISTS idx_machines_machine_id ON machines(machine_id);
CREATE INDEX IF NOT EXISTS idx_machines_protected ON machines(protected);
CREATE INDEX IF NOT EXISTS idx_admin_settings_key ON admin_settings(setting_key);
-- 显示表结构
\d machines;
\d machines;
\d admin_settings;