Skip to content

Commit

Permalink
Add support for all languages for Universal Login (auth0#1016)
Browse files Browse the repository at this point in the history
* Fetch list of languages from CDN instead of hardcoding them

* Updated linting

---------

Co-authored-by: KunalOfficial <[email protected]>
Signed-off-by: BryanLewis-AtOkta <[email protected]>
  • Loading branch information
2 people authored and bryanlewis-okta committed Oct 24, 2024
1 parent 415ddff commit 6a4b609
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 6 deletions.
2 changes: 1 addition & 1 deletion docs/resources/prompt_custom_text.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ resource "auth0_prompt_custom_text" "example" {
### Required

- `body` (String) JSON containing the custom texts. You can check the options for each prompt [here](https://auth0.com/docs/customize/universal-login-pages/customize-login-text-prompts#prompt-values).
- `language` (String) Language of the custom text. Options include: `ar`, `bg`, `bs`, `ca-ES`, `cs`, `cy`, `da`, `de`, `el`, `en`, `es`, `et`, `eu-ES`, `fi`, `fr`, `fr-CA`, `fr-FR`, `gl-ES`, `he`, `hi`, `hr`, `hu`, `id`, `is`, `it`, `ja`, `ko`, `lt`, `lv`, `nb`, `nl`, `nn`, `no`, `pl`, `pt`, `pt-BR`, `pt-PT`, `ro`, `ru`, `sk`, `sl`, `sr`, `sv`, `th`, `tr`, `uk`, `vi`, `zh-CN`, `zh-TW`.
- `language` (String) Language of the custom text. Options include: `ar`, `ar-EG`, `ar-SA`, `az`, `bg`, `bs`, `ca-ES`, `cs`, `cy`, `da`, `de`, `el`, `en`, `es`, `es-AR`, `es-MX`, `et`, `eu-ES`, `fa`, `fi`, `fr`, `fr-CA`, `fr-FR`, `gl-ES`, `he`, `hi`, `hr`, `hu`, `hy`, `id`, `is`, `it`, `ja`, `ko`, `lt`, `lv`, `ms`, `nb`, `nl`, `nn`, `no`, `pl`, `pt`, `pt-BR`, `pt-PT`, `ro`, `ru`, `sk`, `sl`, `sq`, `sr`, `sv`, `th`, `tl`, `tr`, `uk`, `ur`, `vi`, `zh-CN`, `zh-HK`, `zh-TW`.
- `prompt` (String) The term `prompt` is used to refer to a specific step in the login flow. Options include: `captcha`, `common`, `consent`, `custom-form`, `customized-consent`, `device-flow`, `email-otp-challenge`, `email-verification`, `invitation`, `login`, `login-email-verification`, `login-id`, `login-password`, `login-passwordless`, `logout`, `mfa`, `mfa-email`, `mfa-otp`, `mfa-phone`, `mfa-push`, `mfa-recovery-code`, `mfa-sms`, `mfa-voice`, `mfa-webauthn`, `organizations`, `passkeys`, `phone-identifier-challenge`, `phone-identifier-enrollment`, `reset-password`, `signup`, `signup-id`, `signup-password`, `status`.

### Read-Only
Expand Down
48 changes: 43 additions & 5 deletions internal/auth0/prompt/resource_custom_text.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@ package prompt
import (
"context"
"encoding/json"
"io"
"net/http"
"strings"
"time"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
Expand All @@ -15,6 +18,44 @@ import (
internalSchema "github.com/auth0/terraform-provider-auth0/internal/schema"
)

const languagesURL = "https://cdn.auth0.com/ulp/react-components/development/languages/available-languages.json"

func fetchLanguages() []string {
fallbackAvailableLanguages := []string{
"ar", "bg", "bs", "ca-ES", "cs", "cy", "da", "de", "el", "en", "es", "et", "eu-ES", "fi", "fr", "fr-CA", "fr-FR", "gl-ES", "he", "hi", "hr",
"hu", "id", "is", "it", "ja", "ko", "lt", "lv", "nb", "nl", "nn", "no", "pl", "pt", "pt-BR", "pt-PT", "ro", "ru", "sk",
"sl", "sr", "sv", "th", "tr", "uk", "vi", "zh-CN", "zh-TW",
}

client := http.Client{
Timeout: 10 * time.Second, // Set a timeout for the HTTP request.
}

resp, err := client.Get(languagesURL)
if err != nil {
return fallbackAvailableLanguages
}
defer func(Body io.ReadCloser) {
err = Body.Close()
}(resp.Body)

if resp.StatusCode != http.StatusOK {
return fallbackAvailableLanguages
}

var retrievedLanguages []string
decoder := json.NewDecoder(resp.Body)
if err := decoder.Decode(&retrievedLanguages); err != nil {
return fallbackAvailableLanguages
}

if len(retrievedLanguages) == 0 {
return fallbackAvailableLanguages
}

return retrievedLanguages
}

var (
availablePrompts = []string{
"captcha", "common", "consent", "custom-form", "customized-consent", "device-flow", "email-otp-challenge",
Expand All @@ -23,11 +64,8 @@ var (
"mfa-sms", "mfa-voice", "mfa-webauthn", "organizations", "passkeys", "phone-identifier-challenge",
"phone-identifier-enrollment", "reset-password", "signup", "signup-id", "signup-password", "status",
}
availableLanguages = []string{
"ar", "bg", "bs", "ca-ES", "cs", "cy", "da", "de", "el", "en", "es", "et", "eu-ES", "fi", "fr", "fr-CA", "fr-FR", "gl-ES", "he", "hi", "hr",
"hu", "id", "is", "it", "ja", "ko", "lt", "lv", "nb", "nl", "nn", "no", "pl", "pt", "pt-BR", "pt-PT", "ro", "ru", "sk",
"sl", "sr", "sv", "th", "tr", "uk", "vi", "zh-CN", "zh-TW",
}

availableLanguages = fetchLanguages()
)

// NewCustomTextResource will return a new auth0_prompt_custom_text resource.
Expand Down

0 comments on commit 6a4b609

Please sign in to comment.