From 7a4db4c2bc0571564bad82c02e8ca8981aaafa1e Mon Sep 17 00:00:00 2001 From: Piper McCorkle Date: Tue, 28 Jan 2025 15:12:37 -0600 Subject: [PATCH] WR-1797 add wr <> turnstile fields --- .changelog/4952.txt | 3 ++ docs/resources/waiting_room.md | 5 +++ .../cloudflare_waiting_room/resource.tf | 3 ++ .../resource_cloudflare_waiting_room.go | 4 +++ .../schema_cloudflare_waiting_room.go | 34 +++++++++++++++++++ 5 files changed, 49 insertions(+) create mode 100644 .changelog/4952.txt diff --git a/.changelog/4952.txt b/.changelog/4952.txt new file mode 100644 index 0000000000..11d0b251ec --- /dev/null +++ b/.changelog/4952.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/cloudflare_waiting_room: add support for Turnstile fields +``` diff --git a/docs/resources/waiting_room.md b/docs/resources/waiting_room.md index 8473bfaf3e..92aea79c9f 100644 --- a/docs/resources/waiting_room.md +++ b/docs/resources/waiting_room.md @@ -34,6 +34,9 @@ resource "cloudflare_waiting_room" "example" { queueing_status_code = 200 enabled_origin_commands = ["revoke"] + + turnstile_mode = "visible_managed" + turnstile_action = "infinite_queue" } ``` @@ -64,6 +67,8 @@ resource "cloudflare_waiting_room" "example" { - `session_duration` (Number) Lifetime of a cookie (in minutes) set by Cloudflare for users who get access to the origin. Defaults to `5`. - `suspended` (Boolean) Suspends the waiting room. - `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts)) +- `turnstile_action` (String) The action to take when an end user fails a Turnstile challenge. Available values: `log`, `infinite_queue`. Defaults to `log`. +- `turnstile_mode` (String) The type of Turnstile widget to use. Available values: `off`, `invisible`, `visible_non_interactive`, `visible_managed`. Defaults to `off`. ### Read-Only diff --git a/examples/resources/cloudflare_waiting_room/resource.tf b/examples/resources/cloudflare_waiting_room/resource.tf index c02d85ea0b..9b07eb3bba 100644 --- a/examples/resources/cloudflare_waiting_room/resource.tf +++ b/examples/resources/cloudflare_waiting_room/resource.tf @@ -20,4 +20,7 @@ resource "cloudflare_waiting_room" "example" { queueing_status_code = 200 enabled_origin_commands = ["revoke"] + + turnstile_mode = "visible_managed" + turnstile_action = "infinite_queue" } diff --git a/internal/sdkv2provider/resource_cloudflare_waiting_room.go b/internal/sdkv2provider/resource_cloudflare_waiting_room.go index 849b48afe6..064dfaf856 100644 --- a/internal/sdkv2provider/resource_cloudflare_waiting_room.go +++ b/internal/sdkv2provider/resource_cloudflare_waiting_room.go @@ -65,6 +65,8 @@ func buildWaitingRoom(d *schema.ResourceData) cloudflare.WaitingRoom { AdditionalRoutes: additional_routes, QueueingStatusCode: d.Get("queueing_status_code").(int), EnabledOriginCommands: expandInterfaceToStringList(d.Get("enabled_origin_commands").([]interface{})), + TurnstileMode: d.Get("turnstile_mode").(string), + TurnstileAction: d.Get("turnstile_action").(string), } } @@ -121,6 +123,8 @@ func resourceCloudflareWaitingRoomRead(ctx context.Context, d *schema.ResourceDa d.Set("additional_routes", flattenWaitingRoomAdditionalRoutes(waitingRoom.AdditionalRoutes)) d.Set("queueing_status_code", waitingRoom.QueueingStatusCode) d.Set("enabled_origin_commands", waitingRoom.EnabledOriginCommands) + d.Set("turnstile_mode", waitingRoom.TurnstileMode) + d.Set("turnstile_action", waitingRoom.TurnstileAction) return nil } diff --git a/internal/sdkv2provider/schema_cloudflare_waiting_room.go b/internal/sdkv2provider/schema_cloudflare_waiting_room.go index 9684854966..eba1eb653c 100644 --- a/internal/sdkv2provider/schema_cloudflare_waiting_room.go +++ b/internal/sdkv2provider/schema_cloudflare_waiting_room.go @@ -60,6 +60,18 @@ var waitingRoomOriginCommands = []string{ "revoke", } +var waitingRoomTurnstileModes = []string{ + "off", + "invisible", + "visible_non_interactive", + "visible_managed", +} + +var waitingRoomTurnstileActions = []string{ + "log", + "infinite_queue", +} + func resourceCloudflareWaitingRoomSchema() map[string]*schema.Schema { return map[string]*schema.Schema{ consts.ZoneIDSchemaKey: { @@ -212,5 +224,27 @@ func resourceCloudflareWaitingRoomSchema() map[string]*schema.Schema { ValidateFunc: validation.StringInSlice(waitingRoomOriginCommands, false), }, }, + + "turnstile_mode": { + Description: fmt.Sprintf("The type of Turnstile widget to use. %s", renderAvailableDocumentationValuesStringSlice(waitingRoomTurnstileModes)), + Type: schema.TypeString, + Optional: true, + Default: "off", + Elem: &schema.Schema{ + Type: schema.TypeString, + ValidateFunc: validation.StringInSlice(waitingRoomTurnstileModes, false), + }, + }, + + "turnstile_action": { + Description: fmt.Sprintf("The action to take when an end user fails a Turnstile challenge. %s", renderAvailableDocumentationValuesStringSlice(waitingRoomTurnstileActions)), + Type: schema.TypeString, + Optional: true, + Default: "log", + Elem: &schema.Schema{ + Type: schema.TypeString, + ValidateFunc: validation.StringInSlice(waitingRoomTurnstileActions, false), + }, + }, } }