Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
8ce28b9
Add scaffolding commands(POC) and documentation for acul app initiali…
ramya18101 Aug 27, 2025
84d1570
Merge branch 'main' into DXCDT-1178-support-acul-scaffolding-app
ramya18101 Sep 5, 2025
8b4d176
update docs and fix lints
ramya18101 Sep 7, 2025
b663240
add acul_config generation for acul app init
ramya18101 Sep 7, 2025
bddbe33
Initial commit
ramya18101 Sep 8, 2025
2dcda65
Add support for add-screen command
ramya18101 Sep 11, 2025
72abe53
Update branch to the latest
ramya18101 Sep 15, 2025
15be4c8
Merge branch 'DXCDT-1165-support-acul-command' into DXCDT-1178-suppor…
ramya18101 Sep 15, 2025
45f4c6d
refactor scaffolding app code
ramya18101 Sep 15, 2025
8b54cee
refactor scaffolding app code
ramya18101 Sep 15, 2025
d888580
Update branch to the latest
ramya18101 Sep 15, 2025
638461a
refactor screen scaffolding
ramya18101 Sep 15, 2025
77853ac
Update go-auth0 version and docs
ramya18101 Sep 15, 2025
e2909db
refactor: rename and restructure acul scaffolding.
ramya18101 Sep 17, 2025
7a009fe
Update docs
ramya18101 Sep 17, 2025
6a10726
Update docs
ramya18101 Sep 18, 2025
2f6a198
Update branch latest to 'DXCDT-1165-support-acul-command'
ramya18101 Oct 18, 2025
94a145e
Update branch
ramya18101 Oct 19, 2025
74ba506
enhance ACUL project scaffolding with Node checks and improved templa…
ramya18101 Oct 20, 2025
b68c281
refactor screen loader generation to improve error handling
ramya18101 Oct 20, 2025
7b0838b
fix lint
ramya18101 Oct 20, 2025
9a48112
Update branch latest to 'DXCDT-1178-support-acul-scaffolding-app'
ramya18101 Oct 21, 2025
4bf2f31
refactor ACUL scaffolding app commands and docs
ramya18101 Oct 22, 2025
58397fe
Update branch latest to 'DXCDT-1178-support-acul-scaffolding-app'
ramya18101 Oct 22, 2025
f0c01f5
enhance ACUL scaffolding with user guidance and next steps
ramya18101 Oct 22, 2025
d499a95
enhance ACUL scaffolding with improved user feedback
ramya18101 Oct 23, 2025
d406430
refactor ACUL scaffolding
ramya18101 Oct 23, 2025
8708642
refactor ACUL scaffolding
ramya18101 Oct 23, 2025
867c981
refactor ACUL scaffolding to filter out regenerated screenLoader.ts file
ramya18101 Oct 24, 2025
fe59d33
refactor ACUL scaffolding to consolidate post-scaffolding output
ramya18101 Oct 24, 2025
5664339
enhance ACUL scaffolding with template and screens flags for project …
ramya18101 Oct 27, 2025
c156bd6
enhance ACUL scaffolding with the latest manifest
ramya18101 Oct 27, 2025
2a58131
enhance ACUL scaffolding to dynamically fetch the latest release tag
ramya18101 Nov 3, 2025
29cf911
Merge branch 'DXCDT-1165-support-acul-command' into DXCDT-1178-suppor…
ramya18101 Nov 3, 2025
4f58628
use 'acul-sample-app' as default project name
ramya18101 Nov 3, 2025
3d422b9
Merge branch 'DXCDT-1178-support-acul-scaffolding-app' into DXCDT-117…
ramya18101 Nov 3, 2025
5dd3e4c
enhance ACUL scaffolding to support version compatibility checks and …
ramya18101 Nov 4, 2025
ff68db2
enhance ACUL scaffolding with improved error handling and npm install…
ramya18101 Nov 6, 2025
27c4cef
enhance ACUL scaffolding to improve error handling and ensure unique …
ramya18101 Nov 6, 2025
d273de9
Merge branch 'DXCDT-1165-support-acul-command' into DXCDT-1178-suppor…
ramya18101 Nov 7, 2025
ea19a94
improve ACUL scaffolding with handling,prerequisite checks and screen…
ramya18101 Nov 7, 2025
16d880e
improve ACUL scaffolding with handling prerequisite checks and screen…
ramya18101 Nov 7, 2025
6aa4f2f
improve clarity in customization guide
ramya18101 Nov 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions CUSTOMIZATION_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,7 @@ This document provides essential information on **configuring the rendering mode
- When set to `false` or omitted, the default template is used.
- The **default is `false`**.

### 🔹 7. Updating Rendering Mode
- Switching to `"standard"` **only updates the `rendering_mode`**.
- All other fields remain unchanged.

### 🔹 8. Partial Updates
### 🔹 7. Partial Updates
- Only **explicitly declared fields** are updated.
- **Unspecified fields remain as they are**.

Expand Down Expand Up @@ -109,7 +105,6 @@ This document provides essential information on **configuring the rendering mode
- **Use `"standard"` mode for creating a consistent, branded experience for users. Choosing Standard mode will open a webpage
within your browser where you can edit and preview your branding changes.For a comprehensive list of editable parameters and their values
- **Ensure `head_tags` includes at least one `<script>` tag** for proper functionality.
- **When switching to `"standard"`, only update `rendering_mode`**—all other fields should remain unchanged.
- **Use `context_configuration` values carefully** to avoid exposing sensitive data.
- **Always validate your JSON** before applying changes to prevent syntax errors and unexpected behavior.

Expand Down
1 change: 1 addition & 0 deletions docs/auth0_acul.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@ Customize the Universal Login experience. This requires a custom domain to be co

- [auth0 acul config](auth0_acul_config.md) - Configure Advanced Customizations for Universal Login screens.
- [auth0 acul init](auth0_acul_init.md) - Generate a new ACUL project from a template
- [auth0 acul screen](auth0_acul_screen.md) - Manage individual screens for Advanced Customizations for Universal Login.

2 changes: 2 additions & 0 deletions docs/auth0_acul_config_generate.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ auth0 acul config generate [flags]
## Examples

```
auth0 acul config generate <screen-name>
auth0 acul config generate <screen-name> --file settings.json
auth0 acul config generate signup-id
auth0 acul config generate login-id --file login-settings.json
```
Expand Down
4 changes: 3 additions & 1 deletion docs/auth0_acul_config_get.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@ auth0 acul config get [flags]
## Examples

```
auth0 acul config get <screen-name>
auth0 acul config get <screen-name> --file settings.json
auth0 acul config get signup-id
auth0 acul config get login-id -f ./login.json"
auth0 acul config get login-id -f ./acul_config/login-id.json
```


Expand Down
3 changes: 2 additions & 1 deletion docs/auth0_acul_config_list.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ auth0 acul config list [flags]
## Examples

```
auth0 acul config list --prompt login-id --screen login --rendering-mode advanced --include-fields true --fields head_tags,context_configuration
auth0 acul config list --prompt reset-password
auth0 acul config list --rendering-mode advanced --include-fields true --fields head_tags,context_configuration
```


Expand Down
2 changes: 2 additions & 0 deletions docs/auth0_acul_config_set.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ auth0 acul config set [flags]
## Examples

```
auth0 acul config set <screen-name>
auth0 acul config set <screen-name> --file settings.json
auth0 acul config set signup-id --file settings.json
auth0 acul config set login-id
```
Expand Down
1 change: 1 addition & 0 deletions docs/auth0_acul_init.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,6 @@ auth0 acul init [flags]

- [auth0 acul config](auth0_acul_config.md) - Configure Advanced Customizations for Universal Login screens.
- [auth0 acul init](auth0_acul_init.md) - Generate a new ACUL project from a template
- [auth0 acul screen](auth0_acul_screen.md) - Manage individual screens for Advanced Customizations for Universal Login.


13 changes: 13 additions & 0 deletions docs/auth0_acul_screen.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
layout: default
has_toc: false
has_children: true
---
# auth0 acul screen

Manage individual screens for Auth0 Universal Login using ACUL (Advanced Customizations).

## Commands

- [auth0 acul screen add](auth0_acul_screen_add.md) - Add screens to an existing project

44 changes: 44 additions & 0 deletions docs/auth0_acul_screen_add.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
layout: default
parent: auth0 acul screen
has_toc: false
---
# auth0 acul screen add

Add screens to an existing project. The project must have been initialized using `auth0 acul init`.

## Usage
```
auth0 acul screen add [flags]
```

## Examples

```
auth0 acul screen add <screen-name> <screen-name>... --dir <app-directory>
auth0 acul screen add login-id login-password -d acul_app
```


## Flags

```
-d, --dir acul_config.json Path to existing project directory (must contain acul_config.json)
```


## Inherited Flags

```
--debug Enable debug mode.
--no-color Disable colors.
--no-input Disable interactivity.
--tenant string Specific tenant to use.
```


## Related Commands

- [auth0 acul screen add](auth0_acul_screen_add.md) - Add screens to an existing project


13 changes: 13 additions & 0 deletions internal/cli/acul.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,19 @@ func aculCmd(cli *cli) *cobra.Command {

cmd.AddCommand(aculConfigureCmd(cli))
cmd.AddCommand(aculInitCmd(cli))
cmd.AddCommand(aculScreenCmd(cli))

return cmd
}

func aculScreenCmd(cli *cli) *cobra.Command {
cmd := &cobra.Command{
Use: "screen",
Short: "Manage individual screens for Advanced Customizations for Universal Login.",
Long: "Manage individual screens for Auth0 Universal Login using ACUL (Advanced Customizations).",
}

cmd.AddCommand(aculScreenAddCmd(cli))

return cmd
}
Expand Down
10 changes: 4 additions & 6 deletions internal/cli/acul_app_scaffolding.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,9 +150,7 @@ The generated project includes all necessary configuration and boilerplate code
auth0 acul init acul-sample-app --template react --screens login,signup
auth0 acul init acul-sample-app -t react -s login,mfa,signup`,
RunE: func(cmd *cobra.Command, args []string) error {
ctx := cmd.Context()

if err := ensureACULPrerequisites(ctx, cli.api); err != nil {
if err := ensureACULPrerequisites(cmd.Context(), cli.api); err != nil {
return err
}

Expand Down Expand Up @@ -231,7 +229,7 @@ func runScaffold(cli *cli, cmd *cobra.Command, args []string, inputs *struct {

runNpmGenerateScreenLoader(cli, destDir)

if prompt.Confirm("Do you want to run npm install?") {
if prompt.Confirm("Would you like to proceed with installing the required dependencies using 'npm install'?") {
runNpmInstall(cli, destDir)
}

Expand Down Expand Up @@ -596,8 +594,8 @@ func showPostScaffoldingOutput(cli *cli, destDir, successMessage string) {

// Show next steps and related commands.
cli.renderer.Infof("%s Next Steps: Navigate to %s and run:", ansi.Bold("🚀"), ansi.Bold(ansi.Cyan(destDir)))
cli.renderer.Infof(" %s if not yet installed", ansi.Bold(ansi.Cyan("npm install")))
cli.renderer.Infof(" %s", ansi.Bold(ansi.Cyan("auth0 acul dev")))
cli.renderer.Infof(" %s if not yet installed", ansi.Bold(ansi.Cyan("npm install")))
cli.renderer.Infof(" %s", ansi.Bold(ansi.Cyan("auth0 acul dev")))
cli.renderer.Output("")

fmt.Printf("%s Available Commands:\n", ansi.Bold("📋"))
Expand Down
43 changes: 24 additions & 19 deletions internal/cli/acul_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -178,10 +178,10 @@ type aculConfigInput struct {
// ensureConfigFilePath sets a default config file path if none is provided and creates the config directory.
func ensureConfigFilePath(input *aculConfigInput, cli *cli) error {
if input.filePath == "" {
input.filePath = fmt.Sprintf("config/%s.json", input.screenName)
input.filePath = fmt.Sprintf("acul_config/%s.json", input.screenName)
cli.renderer.Warnf("No configuration file path specified. Defaulting to '%s'.", ansi.Green(input.filePath))
}
if err := os.MkdirAll("config", 0755); err != nil {
if err := os.MkdirAll("acul_config", 0755); err != nil {
return fmt.Errorf("could not create config directory: %w", err)
}
return nil
Expand All @@ -208,12 +208,12 @@ func aculConfigGenerateCmd(cli *cli) *cobra.Command {
Short: "Generate a stub config file for a Universal Login screen.",
Long: "Generate a stub config file for a Universal Login screen and save it to a file.\n" +
"If fileName is not provided, it will default to <screen-name>.json in the current directory.",
Example: ` auth0 acul config generate signup-id
Example: ` auth0 acul config generate <screen-name>
auth0 acul config generate <screen-name> --file settings.json
auth0 acul config generate signup-id
auth0 acul config generate login-id --file login-settings.json`,
RunE: func(cmd *cobra.Command, args []string) error {
ctx := cmd.Context()

if err := ensureACULPrerequisites(ctx, cli.api); err != nil {
if err := ensureACULPrerequisites(cmd.Context(), cli.api); err != nil {
return err
}

Expand Down Expand Up @@ -244,12 +244,11 @@ func aculConfigGenerateCmd(cli *cli) *cobra.Command {
return fmt.Errorf("could not write config: %w", err)
}

cli.renderer.Infof("Configuration generated at '%s'.\n"+
" Review the documentation for configuring screens to use ACUL\n"+
" https://auth0.com/docs/customize/login-pages/advanced-customizations/getting-started/configure-acul-screens\n",
ansi.Green(input.filePath))
cli.renderer.Infof("Configuration generated at '%s'", ansi.Green(input.filePath))

cli.renderer.Output("Learn more about configuring ACUL screens https://auth0.com/docs/customize/login-pages/advanced-customizations/getting-started/configure-acul-screens")

cli.renderer.Output(ansi.Yellow("💡 Tip: Use `auth0 acul config get` to fetch remote rendering settings or `auth0 acul config set` to sync local configs."))
cli.renderer.Output(ansi.Cyan("📖 Customization Guide: https://github.com/auth0/auth0-cli/blob/main/CUSTOMIZATION_GUIDE.md"))
return nil
},
}
Expand All @@ -266,11 +265,13 @@ func aculConfigGetCmd(cli *cli) *cobra.Command {
Args: cobra.MaximumNArgs(1),
Short: "Get the current rendering settings for a specific screen",
Long: "Get the current rendering settings for a specific screen.",
Example: ` auth0 acul config get signup-id
auth0 acul config get login-id -f ./login.json"`,
Example: ` auth0 acul config get <screen-name>
auth0 acul config get <screen-name> --file settings.json
auth0 acul config get signup-id
auth0 acul config get login-id -f ./acul_config/login-id.json`,
RunE: func(cmd *cobra.Command, args []string) error {
ctx := cmd.Context()
if err := ensureACULPrerequisites(ctx, cli.api); err != nil {
if err := ensureACULPrerequisites(cmd.Context(), cli.api); err != nil {
return err
}

Expand All @@ -290,6 +291,8 @@ func aculConfigGetCmd(cli *cli) *cobra.Command {

if existingRenderSettings == nil {
cli.renderer.Warnf("No rendering settings found for screen '%s' in tenant '%s'.", ansi.Green(input.screenName), ansi.Blue(cli.tenant))
cli.renderer.Output(ansi.Yellow("💡 Tip: Use `auth0 acul config generate` to generate a stub config file or `auth0 acul config set` to sync local configs."))
cli.renderer.Output(ansi.Cyan("📖 Customization Guide: https://github.com/auth0/auth0-cli/blob/main/CUSTOMIZATION_GUIDE.md"))
return nil
}

Expand Down Expand Up @@ -343,11 +346,12 @@ func aculConfigSetCmd(cli *cli) *cobra.Command {
Args: cobra.MaximumNArgs(1),
Short: "Set the rendering settings for a specific screen",
Long: "Set the rendering settings for a specific screen.",
Example: ` auth0 acul config set signup-id --file settings.json
Example: ` auth0 acul config set <screen-name>
auth0 acul config set <screen-name> --file settings.json
auth0 acul config set signup-id --file settings.json
auth0 acul config set login-id`,
RunE: func(cmd *cobra.Command, args []string) error {
ctx := cmd.Context()
if err := ensureACULPrerequisites(ctx, cli.api); err != nil {
if err := ensureACULPrerequisites(cmd.Context(), cli.api); err != nil {
return err
}

Expand Down Expand Up @@ -418,7 +422,7 @@ func fetchRenderSettings(cmd *cobra.Command, cli *cli, input aculConfigInput) (*
}

// Case 2: No file path provided, default to config/<screen-name>.json.
defaultFilePath := fmt.Sprintf("config/%s.json", input.screenName)
defaultFilePath := fmt.Sprintf("acul_config/%s.json", input.screenName)
data, err := os.ReadFile(defaultFilePath)
if err == nil {
cli.renderer.Warnf("No file path specified. Defaulting to '%s'.", ansi.Green(defaultFilePath))
Expand Down Expand Up @@ -516,7 +520,8 @@ func aculConfigListCmd(cli *cli) *cobra.Command {
Aliases: []string{"ls"},
Short: "List Universal Login rendering configurations",
Long: "List Universal Login rendering configurations with optional filters and pagination.",
Example: ` auth0 acul config list --prompt login-id --screen login --rendering-mode advanced --include-fields true --fields head_tags,context_configuration`,
Example: ` auth0 acul config list --prompt reset-password
auth0 acul config list --rendering-mode advanced --include-fields true --fields head_tags,context_configuration`,
RunE: func(cmd *cobra.Command, args []string) error {
ctx := cmd.Context()
if err := ensureACULPrerequisites(ctx, cli.api); err != nil {
Expand Down
Loading
Loading