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:
parent
161bc02bb9
commit
70d316851a
12 changed files with 102 additions and 17 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue