Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TypeError when using keyword replacement with database enabled clients #929

Open
6 tasks done
snorfalorpagus opened this issue Jul 22, 2024 · 3 comments
Open
6 tasks done
Labels

Comments

@snorfalorpagus
Copy link

Checklist

  • I have looked into the README and have not found a suitable solution or answer.
  • I have looked into the documentation and have not found a suitable solution or answer.
  • I have searched the issues and have not found a suitable solution or answer.
  • I have upgraded to the latest version of this tool and the issue still persists.
  • I have searched the Auth0 Community forums and have not found a suitable solution or answer.
  • I agree to the terms within the Auth0 Code of Conduct.

Description

I’m trying to implement keyword replacement 1 to allow me to manage our development and production tenants. It’s working as expected, but I’m getting an error when I try to use it for the enabled_clients attribute on a username/password database connection. The goal is to enable it for some applications in development, but not in production.

Originally posted in the community forum: https://community.auth0.com/t/typeerror-when-using-keyword-replacement-with-database-enabled-clients/139339/2

Expectation

If I enable debug output when running a0deploy export I see the following:

2024-07-19T16:10:14.369Z - debug: TypeError: (enabledClients || []).map is not a function or its return value is not iterable

Using the same technique for another attribute in the file (e.g. realms) works as expected.

Have I made some mistake in the syntax? Or is this a bug in the CLI?

Reproduction

My config looks like this:

  "AUTH0_KEYWORD_REPLACE_MAPPINGS": {
    "DATABASE_CONNECTIONS_USERNAME_PASSWORD_ENABLED_CLIENTS": [
      "AnApplication",
      "AnotherApplication"
    ],
  }

with a replacement like:

"enabled_clients": "@@DATABASE_CONNECTIONS_USERNAME_PASSWORD_ENABLED_CLIENTS@@"

Deploy CLI version

7.23.1

Node version

18.20.4

@snorfalorpagus
Copy link
Author

I think I've identified the bug. It's specific to using keyword preservation for the enabled_clients attribute. mapClientID2NameSorted is being called with the unsubstituted value (i.e. `"@@...@@") as a string instead of a list of strings. I suppose this isn't a problem for other attributes as they don't have any processing like this.

@willvedd it looks like you added the keyword preservation feature. Do you have any thoughts on what a fix for this would look like? I'm able to help with code but don't have a full model in my head of how everything connects together yet.

@kushalshit27
Copy link
Contributor

@snorfalorpagus Thanks for opening this ticket; especially appreciate your insight on the issue.
It seems like keyword preservation running before the database dum operation creates the issue due to client_id and client name mismatch.
Feel free to submit a PR 🙏.

@IReid71
Copy link

IReid71 commented Nov 8, 2024

A few things we noticed when switching to version 8.0.0:

  1. On all other options where we are trying to use the placeholders for arrays, we need to enclose the value in double quotes: Eg. Within the brute-force-protection.json we need to use "allowlist": "@@bruteForceProtectionAllowlist@@". If we don’t enclose it in double quotes, then the placeholder is not preserved when exporting again. In the case of the enabled_clients the export will fail with an error if you use the double quotes.
  2. To avoid generating an error for enabled_clients, you need to use the array placeholder without double quotes. However, the placeholder is not preserved on export. NOTE: I’m using the "AUTH0_PRESERVE_KEYWORDS": true config option. Example: I use "enabled_clients": @@databaseEnabledClients@@ where the config file I pass in has an entry in the AUTH0_KEYWORD_REPLACE_MAPPINGS section. On export the placeholder is not preserved and instead the actual tenant value for the enabled_clients replaces the placeholder.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants