feat: 管理员跨租户管理 + 注册开关
- 管理员可管理任意用户笔记(读取/修改/删除/回收站/标签/图谱/FTS 全平台) - 普通用户仍数据隔离, 越权返回404 - 新增注册开关: 管理员后台⚙设置可开/关, 支持REGISTRATION_ENABLED环境变量 - 注册关闭时前台/登录页隐藏注册入口, 注册接口返回400 - 冒烟测试扩展到91用例全过
This commit is contained in:
@@ -61,3 +61,31 @@ func (r *UserRepository) GetByID(id uint) (*model.User, error) {
|
||||
func (r *UserRepository) GetDB() *gorm.DB {
|
||||
return r.db
|
||||
}
|
||||
|
||||
// ─────────────── 系统设置(key-value,含注册开关等)───────────────
|
||||
|
||||
// GetSetting 读取设置项(不存在返回 defaultVal)
|
||||
func (r *UserRepository) GetSetting(key, defaultVal string) string {
|
||||
var val string
|
||||
err := r.db.Raw("SELECT value FROM app_settings WHERE key = ?", key).Scan(&val).Error
|
||||
if err != nil || val == "" {
|
||||
return defaultVal
|
||||
}
|
||||
return val
|
||||
}
|
||||
|
||||
// SetSetting 写入或更新设置项
|
||||
func (r *UserRepository) SetSetting(key, val string) error {
|
||||
return r.db.Exec(`
|
||||
INSERT INTO app_settings (key, value) VALUES (?, ?)
|
||||
ON CONFLICT(key) DO UPDATE SET value = excluded.value`, key, val).Error
|
||||
}
|
||||
|
||||
// Migration 中创建 app_settings 表
|
||||
func (r *UserRepository) EnsureSettingsTable() error {
|
||||
return r.db.Exec(`
|
||||
CREATE TABLE IF NOT EXISTS app_settings (
|
||||
key TEXT PRIMARY KEY,
|
||||
value TEXT NOT NULL DEFAULT ''
|
||||
)`).Error
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user