Provider-Wechsel nur für Admin (403 für Nutzer); App blendet Provider-Auswahl für Nicht-Admins aus; v0.3.1

This commit is contained in:
OpenClaw Dev 2026-11-01 04:17:53 +01:00
parent 161bc02bb9
commit 70d316851a
12 changed files with 102 additions and 17 deletions

View file

@ -48,6 +48,9 @@ func (s *Server) listProviders(w http.ResponseWriter, _ *http.Request) {
}
func (s *Server) setActiveProvider(w http.ResponseWriter, r *http.Request) {
if !requireAdmin(w, r) {
return
}
if !s.needProviders(w) {
return
}
@ -82,6 +85,9 @@ func (s *Server) listModels(w http.ResponseWriter, r *http.Request) {
// PUT /api/sessions/{id}/provider: per-session override; empty provider clears it.
func (s *Server) setSessionProvider(w http.ResponseWriter, r *http.Request) {
if !requireAdmin(w, r) {
return
}
if !s.needProviders(w) {
return
}
@ -148,3 +154,15 @@ func (s *Server) getSummary(w http.ResponseWriter, r *http.Request) {
}
writeJSON(w, 200, sm)
}
// errAdminOnly is returned when a non-admin tries to change provider settings.
var errAdminOnly = errors.New("admin only: provider settings can only be changed by the server admin")
// requireAdmin writes 403 unless the caller is the admin (static auth_token).
func requireAdmin(w http.ResponseWriter, r *http.Request) bool {
if principal(r.Context()).Admin {
return true
}
writeErr(w, http.StatusForbidden, errAdminOnly.Error())
return false
}