MCPcopy
hub / github.com/PatchMon/PatchMon / UpdateSettings

Method UpdateSettings

server-source-code/internal/handler/oidc.go:390–418  ·  view source on GitHub ↗

UpdateSettings handles PUT /api/v1/auth/oidc/settings.

(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

388
389// UpdateSettings handles PUT /api/v1/auth/oidc/settings.
390func (h *OidcHandler) UpdateSettings(w http.ResponseWriter, r *http.Request) {
391 if h.settings == nil {
392 Error(w, http.StatusServiceUnavailable, "Settings not available")
393 return
394 }
395 s, err := h.settings.GetFirst(r.Context())
396 if err != nil {
397 Error(w, http.StatusInternalServerError, "Failed to load settings")
398 return
399 }
400 var req map[string]interface{}
401 if err := decodeJSON(r, &req); err != nil {
402 Error(w, http.StatusBadRequest, "Invalid request body")
403 return
404 }
405 applyOidcSettingsUpdate(s, req, h.enc)
406 if err := h.settings.Update(r.Context(), s); err != nil {
407 Error(w, http.StatusInternalServerError, "Failed to update OIDC settings")
408 return
409 }
410 secretSet := false
411 if s.OidcClientSecret != nil && *s.OidcClientSecret != "" && h.enc != nil {
412 _, err := h.enc.Decrypt(*s.OidcClientSecret)
413 secretSet = err == nil
414 }
415 h.reinitOidcClient(r.Context())
416 callbackURL := buildOidcCallbackURL(h.cfg, s)
417 JSON(w, http.StatusOK, oidcSettingsResponse(s, &secretSet, config.ConfiguredViaEnv(h.cfg), config.EnvPreview(h.cfg), callbackURL))
418}
419
420// reinitOidcClient re-resolves OIDC config and creates or clears the client. Call after settings update.
421func (h *OidcHandler) reinitOidcClient(ctx context.Context) {

Callers

nothing calls this directly

Calls 10

reinitOidcClientMethod · 0.95
ErrorFunction · 0.85
decodeJSONFunction · 0.85
applyOidcSettingsUpdateFunction · 0.85
buildOidcCallbackURLFunction · 0.85
oidcSettingsResponseFunction · 0.85
GetFirstMethod · 0.80
DecryptMethod · 0.80
JSONFunction · 0.70
UpdateMethod · 0.45

Tested by

no test coverage detected