Skip to content

Commit

Permalink
DXCDT-741 Add support for configuring email provider
Browse files Browse the repository at this point in the history
  • Loading branch information
acwest committed Jan 7, 2025
1 parent da13038 commit 8ed9694
Show file tree
Hide file tree
Showing 15 changed files with 838 additions and 2 deletions.
1 change: 1 addition & 0 deletions docs/auth0_email.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@ You can configure a test SMTP email server in your development or test environme

## Commands

- [auth0 email provider](auth0_email_provider.md) - Manage custom email provider
- [auth0 email templates](auth0_email_templates.md) - Manage custom email templates

15 changes: 15 additions & 0 deletions docs/auth0_email_provider.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
layout: default
has_toc: false
has_children: true
---
# auth0 email provider

Manage custom email provider for the tenant.

## Commands

- [auth0 email provider create](auth0_email_provider_create.md) - Create the email provider
- [auth0 email provider show](auth0_email_provider_show.md) - Show the email provider
- [auth0 email provider update](auth0_email_provider_update.md) - Update the email provider

68 changes: 68 additions & 0 deletions docs/auth0_email_provider_create.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
---
layout: default
parent: auth0 email provider
has_toc: false
---
# auth0 email provider create

Create the email provider.

To create interactively, use `auth0 email provider create` with no arguments.

To create non-interactively, supply the provider name and other information through the flags.

## Usage
```
auth0 email provider create [flags]
```

## Examples

```
auth0 email provider create
auth0 email provider create --json
auth0 email provider create --provider mandril --enabled=true --credentials='{ "api_key":"TheAPIKey" }' --settings='{ "message": { "view_control_link": true } }'
auth0 email provider create --provider mandril --default-from-address='[email protected]' --credentials='{ "api_key":"TheAPIKey" }' --settings='{ "message": { "view_control_link": true } }'
auth0 email provider create --provider ses --credentials='{ "accessKeyId":"TheAccessKeyId", "secretAccessKey":"TheSecretAccessKey", "region":"eu" }' --settings='{ "message": { "configuration_set_name": "TheConfigurationSetName" } }'
auth0 email provider create --provider sendgrid --credentials='{ "api_key":"TheAPIKey" }'
auth0 email provider create --provider sparkpost --credentials='{ "api_key":"TheAPIKey" }'
auth0 email provider create --provider sparkpost --credentials='{ "api_key":"TheAPIKey", "region":"eu" }'
auth0 email provider create --provider mailgun --credentials='{ "api_key":"TheAPIKey", "domain": "example.com"}'
auth0 email provider create --provider mailgun --credentials='{ "api_key":"TheAPIKey", "domain": "example.com", "region":"eu" }'
auth0 email provider create --provider smtp --credentials='{ "smtp_host":"smtp.example.com", "smtp_port":25, "smtp_user":"smtp", "smtp_pass":"TheSMTPPassword" }'
auth0 email provider create --provider azure_cs --credentials='{ "connection_string":"TheConnectionString" }'
auth0 email provider create --provider ms365 --credentials='{ "tenantId":"TheTenantId", "clientId":"TheClientID", "clientSecret":"TheClientSecret" }'
auth0 email provider create --provider custom --enabled=true --default-from-address="[email protected]"
```


## Flags

```
-c, --credentials string Credentials for the email provider, formatted as JSON.
-f, --default-from-address string Provider default FROM address if none is specified.
-e, --enabled Whether the provided is enabled (true) or disabled (false). (default true)
--json Output in json format.
-p, --provider string Provider name. Can be 'mandrill', 'ses', 'sendgrid', 'sparkpost', 'mailgun', 'smtp', 'azure_cs', 'ms365', or 'custom'
-r, --reveal-secrets Display the provider secrets ('credentials') as part of the command output.
-s, --settings string Settings for the email provider. formatted as JSON.
```


## Inherited Flags

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


## Related Commands

- [auth0 email provider create](auth0_email_provider_create.md) - Create the email provider
- [auth0 email provider show](auth0_email_provider_show.md) - Show the email provider
- [auth0 email provider update](auth0_email_provider_update.md) - Update the email provider


48 changes: 48 additions & 0 deletions docs/auth0_email_provider_show.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
layout: default
parent: auth0 email provider
has_toc: false
---
# auth0 email provider show

Display information about the email provider.

## Usage
```
auth0 email provider show [flags]
```

## Examples

```
auth0 email provider show
auth0 email provider show --reveal-secrets
auth0 email provider show -r --json
```


## Flags

```
--json Output in json format.
-r, --reveal-secrets Display the provider secrets ('credentials') as part of the command output.
```


## Inherited Flags

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


## Related Commands

- [auth0 email provider create](auth0_email_provider_create.md) - Create the email provider
- [auth0 email provider show](auth0_email_provider_show.md) - Show the email provider
- [auth0 email provider update](auth0_email_provider_update.md) - Update the email provider


72 changes: 72 additions & 0 deletions docs/auth0_email_provider_update.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
layout: default
parent: auth0 email provider
has_toc: false
---
# auth0 email provider update

Update the email provider.

To update interactively, use `auth0 email provider update` with no arguments.

To update non-interactively, supply the provider name and other information through the flags.

## Usage
```
auth0 email provider update [flags]
```

## Examples

```
auth0 email provider update
auth0 email provider update --json
auth0 email provider update --enabled=false
auth0 email provider update --credentials='{ "api_key":"NewAPIKey" }'
auth0 email provider update --settings='{ "message": { "view_control_link": true } }'
auth0 email provider update --default-from-address="[email protected]"
auth0 email provider update --provider mandril --enabled=true --credentials='{ "api_key":"TheAPIKey" }' --settings='{ "message": { "view_control_link": true } }'
auth0 email provider update --provider mandril --default-from-address='[email protected]' --credentials='{ "api_key":"TheAPIKey" }' --settings='{ "message": { "view_control_link": true } }'
auth0 email provider update --provider ses --credentials='{ "accessKeyId":"TheAccessKeyId", "secretAccessKey":"TheSecretAccessKey", "region":"eu" }' --settings='{ "message": { "configuration_set_name": "TheConfigurationSetName" } }'
auth0 email provider update --provider sendgrid --credentials='{ "api_key":"TheAPIKey" }'
auth0 email provider update --provider sparkpost --credentials='{ "api_key":"TheAPIKey" }'
auth0 email provider update --provider sparkpost --credentials='{ "api_key":"TheAPIKey", "region":"eu" }'
auth0 email provider update --provider mailgun --credentials='{ "api_key":"TheAPIKey", "domain": "example.com"}'
auth0 email provider update --provider mailgun --credentials='{ "api_key":"TheAPIKey", "domain": "example.com", "region":"eu" }'
auth0 email provider update --provider smtp --credentials='{ "smtp_host":"smtp.example.com", "smtp_port":25, "smtp_user":"smtp", "smtp_pass":"TheSMTPPassword" }'
auth0 email provider update --provider azure_cs --credentials='{ "connection_string":"TheConnectionString" }'
auth0 email provider update --provider ms365 --credentials='{ "tenantId":"TheTenantId", "clientId":"TheClientID", "clientSecret":"TheClientSecret" }'
auth0 email provider update --provider custom --enabled=true --default-from-address="[email protected]"
```


## Flags

```
-c, --credentials string Credentials for the email provider, formatted as JSON.
-f, --default-from-address string Provider default FROM address if none is specified.
-e, --enabled Whether the provided is enabled (true) or disabled (false). (default true)
--json Output in json format.
-p, --provider string Provider name. Can be 'mandrill', 'ses', 'sendgrid', 'sparkpost', 'mailgun', 'smtp', 'azure_cs', 'ms365', or 'custom'
-r, --reveal-secrets Display the provider secrets ('credentials') as part of the command output.
-s, --settings string Settings for the email provider. formatted as JSON.
```


## Inherited Flags

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


## Related Commands

- [auth0 email provider create](auth0_email_provider_create.md) - Create the email provider
- [auth0 email provider show](auth0_email_provider_show.md) - Show the email provider
- [auth0 email provider update](auth0_email_provider_update.md) - Update the email provider


8 changes: 8 additions & 0 deletions internal/auth0/email_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,14 @@ import (
)

type EmailProviderAPI interface {
// Create email provider.
// See: https://auth0.com/docs/api/management/v2#!/Emails/post_provider
Create(ctx context.Context, ep *management.EmailProvider, opts ...management.RequestOption) error

// Update email provider.
// See: https://auth0.com/docs/api/management/v2#!/Emails/patch_provider
Update(ctx context.Context, ep *management.EmailProvider, opts ...management.RequestOption) (err error)

// Read email provider details.
// See: https://auth0.com/docs/api/management/v2#!/Emails/get_provider
Read(ctx context.Context, opts ...management.RequestOption) (ep *management.EmailProvider, err error)
Expand Down
38 changes: 38 additions & 0 deletions internal/auth0/mock/email_provider_mock.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/cli/actions.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ var (
"post-user-registration": actionTemplatePostUserRegistration,
"post-change-password": actionTemplatePostChangePassword,
"send-phone-message": actionTemplateSendPhoneMessage,
"custom-email-provider": actionTemplateCustomEmailProvider,
}
)

Expand Down
3 changes: 3 additions & 0 deletions internal/cli/actions_embed.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ var (
//go:embed data/action-template-send-phone-message.js
actionTemplateSendPhoneMessage string

//go:embed data/action-template-custom-email-provider.js
actionTemplateCustomEmailProvider string

//go:embed data/action-template-empty.js
actionTemplateEmpty string
)
9 changes: 9 additions & 0 deletions internal/cli/data/action-template-custom-email-provider.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/**
* Handler to be executed while sending an email notification
* @param {Event} event - Details about the user and the context in which they are logging in.
* @param {CustomEmailProviderAPI} api - Methods and utilities to help change the behavior of sending a email notification.
*/
exports.onExecuteCustomEmailProvider = async (event, api) => {
// Code goes here
return;
};
1 change: 1 addition & 0 deletions internal/cli/email.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ func emailCmd(cli *cli) *cobra.Command {
}

cmd.AddCommand(emailTemplateCmd(cli))
cmd.AddCommand(emailProviderCmd(cli))

return cmd
}
Loading

0 comments on commit 8ed9694

Please sign in to comment.