diff --git a/lexicons/org/tangled/secret/addSecret.json b/lexicons/org/tangled/secret/addSecret.json index 5f529427c..f135269ab 100644 --- a/lexicons/org/tangled/secret/addSecret.json +++ b/lexicons/org/tangled/secret/addSecret.json @@ -26,7 +26,7 @@ }, "value": { "type": "string", - "maxLength": 200, + "maxLength": 4096, "minLength": 1 } } diff --git a/lexicons/repo/addSecret.json b/lexicons/repo/addSecret.json index b41ab5397..5e3259b9f 100644 --- a/lexicons/repo/addSecret.json +++ b/lexicons/repo/addSecret.json @@ -26,7 +26,7 @@ }, "value": { "type": "string", - "maxLength": 200, + "maxLength": 4096, "minLength": 1 } } diff --git a/spindle/xrpc/org_tangled_secret_add_secret.go b/spindle/xrpc/org_tangled_secret_add_secret.go index 6a6b52260..fe854d0b2 100644 --- a/spindle/xrpc/org_tangled_secret_add_secret.go +++ b/spindle/xrpc/org_tangled_secret_add_secret.go @@ -22,8 +22,8 @@ func (x *Xrpc) handleOrgTangledSecretAddSecret(w http.ResponseWriter, r *http.Re writeError(w, invalidRequest(err), http.StatusBadRequest) return } - if len(input.Value) < 1 || len(input.Value) > 200 { - writeError(w, invalidRequest(fmt.Errorf("secret value length must be between 1 and 200")), http.StatusBadRequest) + if len(input.Value) < 1 || len(input.Value) > maxSecretValueLen { + writeError(w, invalidRequest(fmt.Errorf("secret value length must be between 1 and %d", maxSecretValueLen)), http.StatusBadRequest) return } actor, repo, ok := x.authorizeOrgSecretRepo(w, r, input.Repo) diff --git a/spindle/xrpc/org_tangled_secret_common.go b/spindle/xrpc/org_tangled_secret_common.go index da535f0b7..2c3874b60 100644 --- a/spindle/xrpc/org_tangled_secret_common.go +++ b/spindle/xrpc/org_tangled_secret_common.go @@ -9,9 +9,14 @@ import ( xrpcerr "tangled.org/core/xrpc/errors" ) +const ( + maxSecretKeyLen = 50 + maxSecretValueLen = 4096 +) + func validateOrgSecretKey(key string) error { - if len(key) < 1 || len(key) > 50 { - return fmt.Errorf("secret key length must be between 1 and 50") + if len(key) < 1 || len(key) > maxSecretKeyLen { + return fmt.Errorf("secret key length must be between 1 and %d", maxSecretKeyLen) } return nil } diff --git a/spindle/xrpc/org_tangled_test.go b/spindle/xrpc/org_tangled_test.go index c4927cc68..d7232bcca 100644 --- a/spindle/xrpc/org_tangled_test.go +++ b/spindle/xrpc/org_tangled_test.go @@ -106,7 +106,7 @@ func TestOrgSecretInputValidation(t *testing.T) { "empty key": mustJSON(t, org_tangled.SecretAddSecret_Input{Repo: repo.String(), Value: "value"}), "long key": mustJSON(t, org_tangled.SecretAddSecret_Input{Repo: repo.String(), Key: strings.Repeat("k", 51), Value: "value"}), "empty value": mustJSON(t, org_tangled.SecretAddSecret_Input{Repo: repo.String(), Key: valid.Key}), - "long value": mustJSON(t, org_tangled.SecretAddSecret_Input{Repo: repo.String(), Key: valid.Key, Value: strings.Repeat("v", 201)}), + "long value": mustJSON(t, org_tangled.SecretAddSecret_Input{Repo: repo.String(), Key: valid.Key, Value: strings.Repeat("v", 4097)}), } for name, body := range cases { t.Run(name, func(t *testing.T) { diff --git a/web/src/routes/[handle]/[repo]/settings/pipelines/secrets/new/+page.svelte b/web/src/routes/[handle]/[repo]/settings/pipelines/secrets/new/+page.svelte index ae4b232cd..b9a54087c 100644 --- a/web/src/routes/[handle]/[repo]/settings/pipelines/secrets/new/+page.svelte +++ b/web/src/routes/[handle]/[repo]/settings/pipelines/secrets/new/+page.svelte @@ -7,6 +7,7 @@ import Button from "$lib/components/ui/Button.svelte"; import ErrorAlert from "$lib/components/ui/Error.svelte"; import Input from "$lib/components/ui/Input.svelte"; + import Textarea from "$lib/components/ui/Textarea.svelte"; import DrillDown from "$lib/components/settings/DrillDown.svelte"; import SettingsList from "$lib/components/settings/SettingsList.svelte"; import FormRow from "$lib/components/settings/FormRow.svelte"; @@ -46,7 +47,14 @@ - +