feat: add internal workbench admin api

This commit is contained in:
richjohnrambo
2026-09-16 14:03:51 +08:00
parent cf08f7ceeb
commit 21c36abf58
9 changed files with 581 additions and 9 deletions
+12 -5
View File
@@ -13,14 +13,16 @@ import (
"time"
"git.118im.com/im_team/im_workbench/internal/auth"
"git.118im.com/im_team/im_workbench/internal/config"
"git.118im.com/im_team/im_workbench/internal/events"
"git.118im.com/im_team/im_workbench/internal/store"
)
type API struct {
store *store.Store
auth *auth.Authenticator
events events.Publisher
store *store.Store
auth *auth.Authenticator
events events.Publisher
authCfg config.AuthConfig
}
const workbenchEventPublishTimeout = 15 * time.Second
@@ -30,11 +32,11 @@ const (
maxMailboxContentLength = 5000
)
func New(st *store.Store, authenticator *auth.Authenticator, publisher events.Publisher) *API {
func New(st *store.Store, authenticator *auth.Authenticator, publisher events.Publisher, authCfg config.AuthConfig) *API {
if publisher == nil {
publisher = events.NoopPublisher{}
}
return &API{store: st, auth: authenticator, events: publisher}
return &API{store: st, auth: authenticator, events: publisher, authCfg: authCfg}
}
func (a *API) Register(mux *http.ServeMux) {
@@ -59,6 +61,11 @@ func (a *API) Register(mux *http.ServeMux) {
mux.HandleFunc("/v1/workbench/reports/monthly/", a.withAuth(a.monthlyReportResource))
mux.HandleFunc("/v1/workbench/executive-mailbox/config", a.withAuth(a.mailboxConfig))
mux.HandleFunc("/v1/workbench/executive-mailbox/submissions", a.withAuth(a.mailboxSubmissions))
mux.HandleFunc("/internal/admin/workbench/apps", a.withInternalAdminAuth(a.adminWorkbenchApps))
mux.HandleFunc("/internal/admin/workbench/apps/disable", a.withInternalAdminAuth(a.adminWorkbenchAppDisable))
mux.HandleFunc("/internal/admin/workbench/apps/reorder", a.withInternalAdminAuth(a.adminWorkbenchAppsReorder))
mux.HandleFunc("/internal/admin/workbench/mailbox-config", a.withInternalAdminAuth(a.adminMailboxConfig))
mux.HandleFunc("/internal/admin/workbench/feedback-config", a.withInternalAdminAuth(a.adminFeedbackConfig))
}
func (a *API) Healthz(w http.ResponseWriter, r *http.Request) {