7
7
"fmt"
8
8
"net/http"
9
9
"sort"
10
+ "strings"
10
11
"time"
11
12
12
13
"github.com/go-chi/chi/v5"
@@ -29,6 +30,7 @@ import (
29
30
"github.com/coder/coder/v2/coderd/searchquery"
30
31
"github.com/coder/coder/v2/coderd/telemetry"
31
32
"github.com/coder/coder/v2/coderd/util/ptr"
33
+ "github.com/coder/coder/v2/coderd/util/slice"
32
34
"github.com/coder/coder/v2/coderd/workspacestats"
33
35
"github.com/coder/coder/v2/codersdk"
34
36
"github.com/coder/coder/v2/examples"
@@ -352,13 +354,17 @@ func (api *API) postTemplateByOrganization(rw http.ResponseWriter, r *http.Reque
352
354
}
353
355
}
354
356
355
- if createTemplate .CORSBehavior != nil && * createTemplate .CORSBehavior != "" {
356
- val := createTemplate .CORSBehavior
357
- if err := val .Validate (); err != nil {
358
- validErrs = append (validErrs , codersdk.ValidationError {Field : "cors_behavior" , Detail : err .Error ()})
359
- } else {
360
- corsBehavior = database .CorsBehavior (* val )
361
- }
357
+ // Default the CORS behavior here to Simple so we don't break all existing templates.
358
+ val := database .CorsBehaviorSimple
359
+ if createTemplate .CORSBehavior != nil {
360
+ val = database .CorsBehavior (* createTemplate .CORSBehavior )
361
+ }
362
+ if ! val .Valid () {
363
+ validErrs = append (validErrs , codersdk.ValidationError {Field : "cors_behavior" ,
364
+ Detail : fmt .Sprintf ("Invalid CORS behavior %q. Must be one of [%s]" , * createTemplate .CORSBehavior , strings .Join (slice .ToStrings (database .AllCorsBehaviorValues ()), ", " )),
365
+ })
366
+ } else {
367
+ corsBehavior = val
362
368
}
363
369
364
370
if autostopRequirementWeeks < 0 {
@@ -738,11 +744,13 @@ func (api *API) patchTemplateMeta(rw http.ResponseWriter, r *http.Request) {
738
744
739
745
corsBehavior := template .CorsBehavior
740
746
if req .CORSBehavior != nil && * req .CORSBehavior != "" {
741
- val := req .CORSBehavior
742
- if err := val .Validate (); err != nil {
743
- validErrs = append (validErrs , codersdk.ValidationError {Field : "cors_behavior" , Detail : err .Error ()})
747
+ val := database .CorsBehavior (* req .CORSBehavior )
748
+ if ! val .Valid () {
749
+ validErrs = append (validErrs , codersdk.ValidationError {Field : "cors_behavior" ,
750
+ Detail : fmt .Sprintf ("Invalid CORS behavior %q. Must be one of [%s]" , * req .CORSBehavior , strings .Join (slice .ToStrings (database .AllCorsBehaviorValues ()), ", " )),
751
+ })
744
752
} else {
745
- corsBehavior = database . CorsBehavior ( * val )
753
+ corsBehavior = val
746
754
}
747
755
}
748
756
0 commit comments