- 新增 PUT /api/v1/admin/api-keys/:id 端点,允许管理员修改任意用户 API Key 的分组绑定 - 跳过用户级权限校验但保留分组有效性验证,修改后触发认证缓存失效 - Service 层支持三态语义:nil=不修改,0=解绑,>0=绑定,<0=拒绝 - 指针值拷贝保证安全隔离,负数 groupID 返回 400 INVALID_GROUP_ID - 前端 UserApiKeysModal 新增可点击的分组选择下拉框,支持多 Key 并发更新 - 下拉支持视口翻转和滚动关闭,按钮有 disabled 和加载状态 - 覆盖:后端 20 个单元测试 (Service 11 + Handler 9) + 前端 16 个 E2E 测试 - golangci-lint 0 issues, make test-unit 全部通过
55 lines
1.7 KiB
Go
55 lines
1.7 KiB
Go
package handler
|
|
|
|
import (
|
|
"github.com/Wei-Shaw/sub2api/internal/handler/admin"
|
|
)
|
|
|
|
// AdminHandlers contains all admin-related HTTP handlers
|
|
type AdminHandlers struct {
|
|
Dashboard *admin.DashboardHandler
|
|
User *admin.UserHandler
|
|
Group *admin.GroupHandler
|
|
Account *admin.AccountHandler
|
|
Announcement *admin.AnnouncementHandler
|
|
DataManagement *admin.DataManagementHandler
|
|
OAuth *admin.OAuthHandler
|
|
OpenAIOAuth *admin.OpenAIOAuthHandler
|
|
GeminiOAuth *admin.GeminiOAuthHandler
|
|
AntigravityOAuth *admin.AntigravityOAuthHandler
|
|
Proxy *admin.ProxyHandler
|
|
Redeem *admin.RedeemHandler
|
|
Promo *admin.PromoHandler
|
|
Setting *admin.SettingHandler
|
|
Ops *admin.OpsHandler
|
|
System *admin.SystemHandler
|
|
Subscription *admin.SubscriptionHandler
|
|
Usage *admin.UsageHandler
|
|
UserAttribute *admin.UserAttributeHandler
|
|
ErrorPassthrough *admin.ErrorPassthroughHandler
|
|
APIKey *admin.AdminAPIKeyHandler
|
|
}
|
|
|
|
// Handlers contains all HTTP handlers
|
|
type Handlers struct {
|
|
Auth *AuthHandler
|
|
User *UserHandler
|
|
APIKey *APIKeyHandler
|
|
Usage *UsageHandler
|
|
Redeem *RedeemHandler
|
|
Subscription *SubscriptionHandler
|
|
Announcement *AnnouncementHandler
|
|
Admin *AdminHandlers
|
|
Gateway *GatewayHandler
|
|
OpenAIGateway *OpenAIGatewayHandler
|
|
SoraGateway *SoraGatewayHandler
|
|
SoraClient *SoraClientHandler
|
|
Setting *SettingHandler
|
|
Totp *TotpHandler
|
|
}
|
|
|
|
// BuildInfo contains build-time information
|
|
type BuildInfo struct {
|
|
Version string
|
|
BuildType string // "source" for manual builds, "release" for CI builds
|
|
}
|