Skip to content

Commit cfa101d

Browse files
authored
fix: limit app group length (#407)
1 parent 442ff2a commit cfa101d

File tree

1 file changed

+23
-9
lines changed

1 file changed

+23
-9
lines changed

provider/app.go

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,17 @@ var (
2323
appSlugRegex = regexp.MustCompile(`^[a-z0-9](-?[a-z0-9])*$`)
2424
)
2525

26-
const appDisplayNameMaxLength = 64 // database column limit
26+
const (
27+
appDisplayNameMaxLength = 64 // database column limit
28+
appGroupNameMaxLength = 64
29+
)
2730

2831
func appResource() *schema.Resource {
2932
return &schema.Resource{
3033
SchemaVersion: 1,
3134

3235
Description: "Use this resource to define shortcuts to access applications in a workspace.",
33-
CreateContext: func(c context.Context, resourceData *schema.ResourceData, i interface{}) diag.Diagnostics {
36+
CreateContext: func(c context.Context, resourceData *schema.ResourceData, i any) diag.Diagnostics {
3437
resourceData.SetId(uuid.NewString())
3538

3639
diags := diag.Diagnostics{}
@@ -63,10 +66,10 @@ func appResource() *schema.Resource {
6366

6467
return diags
6568
},
66-
ReadContext: func(c context.Context, resourceData *schema.ResourceData, i interface{}) diag.Diagnostics {
69+
ReadContext: func(c context.Context, resourceData *schema.ResourceData, i any) diag.Diagnostics {
6770
return nil
6871
},
69-
DeleteContext: func(ctx context.Context, rd *schema.ResourceData, i interface{}) diag.Diagnostics {
72+
DeleteContext: func(ctx context.Context, rd *schema.ResourceData, i any) diag.Diagnostics {
7073
return nil
7174
},
7275
Schema: map[string]*schema.Schema{
@@ -92,7 +95,7 @@ func appResource() *schema.Resource {
9295
"built-in icon with `\"${data.coder_workspace.me.access_url}/icon/<path>\"`.",
9396
ForceNew: true,
9497
Optional: true,
95-
ValidateFunc: func(i interface{}, s string) ([]string, []error) {
98+
ValidateFunc: func(i any, s string) ([]string, []error) {
9699
_, err := url.Parse(s)
97100
if err != nil {
98101
return nil, []error{err}
@@ -108,7 +111,7 @@ func appResource() *schema.Resource {
108111
"hyphen or contain two consecutive hyphens.",
109112
ForceNew: true,
110113
Required: true,
111-
ValidateDiagFunc: func(val interface{}, c cty.Path) diag.Diagnostics {
114+
ValidateDiagFunc: func(val any, c cty.Path) diag.Diagnostics {
112115
valStr, ok := val.(string)
113116
if !ok {
114117
return diag.Errorf("expected string, got %T", val)
@@ -126,7 +129,7 @@ func appResource() *schema.Resource {
126129
Description: "A display name to identify the app. Defaults to the slug.",
127130
ForceNew: true,
128131
Optional: true,
129-
ValidateDiagFunc: func(val interface{}, c cty.Path) diag.Diagnostics {
132+
ValidateDiagFunc: func(val any, c cty.Path) diag.Diagnostics {
130133
valStr, ok := val.(string)
131134
if !ok {
132135
return diag.Errorf("expected string, got %T", val)
@@ -161,7 +164,7 @@ func appResource() *schema.Resource {
161164
ForceNew: true,
162165
Optional: true,
163166
Default: "owner",
164-
ValidateDiagFunc: func(val interface{}, c cty.Path) diag.Diagnostics {
167+
ValidateDiagFunc: func(val any, c cty.Path) diag.Diagnostics {
165168
valStr, ok := val.(string)
166169
if !ok {
167170
return diag.Errorf("expected string, got %T", val)
@@ -228,6 +231,17 @@ func appResource() *schema.Resource {
228231
Description: "The name of a group that this app belongs to.",
229232
ForceNew: true,
230233
Optional: true,
234+
ValidateDiagFunc: func(val any, c cty.Path) diag.Diagnostics {
235+
valStr, ok := val.(string)
236+
if !ok {
237+
return diag.Errorf("expected string, got %T", val)
238+
}
239+
240+
if len(valStr) > appGroupNameMaxLength {
241+
return diag.Errorf("group name is too long (max %d characters)", appGroupNameMaxLength)
242+
}
243+
return nil
244+
},
231245
},
232246
"order": {
233247
Type: schema.TypeInt,
@@ -250,7 +264,7 @@ func appResource() *schema.Resource {
250264
ForceNew: true,
251265
Optional: true,
252266
Default: "slim-window",
253-
ValidateDiagFunc: func(val interface{}, c cty.Path) diag.Diagnostics {
267+
ValidateDiagFunc: func(val any, c cty.Path) diag.Diagnostics {
254268
valStr, ok := val.(string)
255269
if !ok {
256270
return diag.Errorf("expected string, got %T", val)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy