auth0-deploy-cli 7.5.1 → 7.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/.eslintrc +7 -41
  2. package/.husky/pre-commit +4 -0
  3. package/.husky/pre-push +3 -1
  4. package/.prettierignore +10 -0
  5. package/.prettierrc.json +4 -0
  6. package/CHANGELOG.md +209 -7
  7. package/CONTRIBUTING.md +2 -2
  8. package/README.md +3 -0
  9. package/lib/args.js +16 -17
  10. package/lib/commands/export.js +3 -3
  11. package/lib/commands/import.js +7 -6
  12. package/lib/commands/index.js +1 -1
  13. package/lib/configFactory.js +5 -1
  14. package/lib/context/defaults.js +4 -3
  15. package/lib/context/directory/handlers/actions.js +6 -5
  16. package/lib/context/directory/handlers/attackProtection.js +7 -6
  17. package/lib/context/directory/handlers/branding.js +60 -0
  18. package/lib/context/directory/handlers/clientGrants.js +6 -4
  19. package/lib/context/directory/handlers/clients.js +4 -3
  20. package/lib/context/directory/handlers/connections.js +7 -4
  21. package/lib/context/directory/handlers/databases.js +30 -22
  22. package/lib/context/directory/handlers/emailProvider.js +6 -4
  23. package/lib/context/directory/handlers/emailTemplates.js +13 -11
  24. package/lib/context/directory/handlers/guardianFactorProviders.js +6 -4
  25. package/lib/context/directory/handlers/guardianFactorTemplates.js +6 -4
  26. package/lib/context/directory/handlers/guardianFactors.js +6 -4
  27. package/lib/context/directory/handlers/guardianPhoneFactorMessageTypes.js +4 -3
  28. package/lib/context/directory/handlers/guardianPhoneFactorSelectedProvider.js +4 -3
  29. package/lib/context/directory/handlers/guardianPolicies.js +4 -3
  30. package/lib/context/directory/handlers/hooks.js +5 -4
  31. package/lib/context/directory/handlers/index.js +5 -2
  32. package/lib/context/directory/handlers/migrations.js +8 -8
  33. package/lib/context/directory/handlers/organizations.js +4 -3
  34. package/lib/context/directory/handlers/pages.js +20 -20
  35. package/lib/context/directory/handlers/resourceServers.js +6 -4
  36. package/lib/context/directory/handlers/roles.js +4 -3
  37. package/lib/context/directory/handlers/rules.js +5 -4
  38. package/lib/context/directory/handlers/rulesConfigs.js +7 -5
  39. package/lib/context/directory/handlers/tenant.js +7 -4
  40. package/lib/context/directory/handlers/triggers.js +3 -2
  41. package/lib/context/directory/index.js +23 -22
  42. package/lib/context/index.js +66 -62
  43. package/lib/context/yaml/handlers/actions.js +12 -8
  44. package/lib/context/yaml/handlers/attackProtection.js +6 -12
  45. package/lib/context/yaml/handlers/branding.js +66 -0
  46. package/lib/context/yaml/handlers/clientGrants.js +5 -4
  47. package/lib/context/yaml/handlers/clients.js +9 -6
  48. package/lib/context/yaml/handlers/connections.js +10 -7
  49. package/lib/context/yaml/handlers/databases.js +15 -10
  50. package/lib/context/yaml/handlers/emailProvider.js +7 -5
  51. package/lib/context/yaml/handlers/emailTemplates.js +6 -5
  52. package/lib/context/yaml/handlers/guardianFactorProviders.js +6 -13
  53. package/lib/context/yaml/handlers/guardianFactorTemplates.js +6 -13
  54. package/lib/context/yaml/handlers/guardianFactors.js +6 -13
  55. package/lib/context/yaml/handlers/guardianPhoneFactorMessageTypes.js +6 -13
  56. package/lib/context/yaml/handlers/guardianPhoneFactorSelectedProvider.js +6 -13
  57. package/lib/context/yaml/handlers/guardianPolicies.js +6 -13
  58. package/lib/context/yaml/handlers/hooks.js +7 -5
  59. package/lib/context/yaml/handlers/index.js +5 -2
  60. package/lib/context/yaml/handlers/migrations.js +3 -2
  61. package/lib/context/yaml/handlers/organizations.js +6 -5
  62. package/lib/context/yaml/handlers/pages.js +6 -5
  63. package/lib/context/yaml/handlers/resourceServers.js +5 -4
  64. package/lib/context/yaml/handlers/roles.js +6 -5
  65. package/lib/context/yaml/handlers/rules.js +6 -5
  66. package/lib/context/yaml/handlers/rulesConfigs.js +6 -5
  67. package/lib/context/yaml/handlers/tenant.js +7 -5
  68. package/lib/context/yaml/handlers/triggers.js +5 -4
  69. package/lib/context/yaml/index.js +33 -24
  70. package/lib/index.js +20 -15
  71. package/lib/logger.js +4 -3
  72. package/lib/readonly.js +11 -16
  73. package/lib/sessionDurationsToMinutes.js +15 -0
  74. package/lib/tools/auth0/client.js +6 -6
  75. package/lib/tools/auth0/handlers/actions.js +21 -23
  76. package/lib/tools/auth0/handlers/attackProtection.js +14 -17
  77. package/lib/tools/auth0/handlers/branding.js +71 -13
  78. package/lib/tools/auth0/handlers/clientGrants.js +17 -10
  79. package/lib/tools/auth0/handlers/clients.js +15 -8
  80. package/lib/tools/auth0/handlers/connections.js +30 -10
  81. package/lib/tools/auth0/handlers/databases.js +24 -12
  82. package/lib/tools/auth0/handlers/default.js +47 -29
  83. package/lib/tools/auth0/handlers/emailTemplates.js +8 -10
  84. package/lib/tools/auth0/handlers/guardianFactorProviders.js +3 -3
  85. package/lib/tools/auth0/handlers/guardianFactorTemplates.js +3 -3
  86. package/lib/tools/auth0/handlers/guardianFactors.js +3 -3
  87. package/lib/tools/auth0/handlers/guardianPhoneFactorMessageTypes.js +11 -10
  88. package/lib/tools/auth0/handlers/guardianPhoneFactorSelectedProvider.js +10 -9
  89. package/lib/tools/auth0/handlers/guardianPolicies.js +5 -4
  90. package/lib/tools/auth0/handlers/hooks.js +34 -21
  91. package/lib/tools/auth0/handlers/index.js +31 -27
  92. package/lib/tools/auth0/handlers/migrations.js +2 -1
  93. package/lib/tools/auth0/handlers/organizations.js +67 -32
  94. package/lib/tools/auth0/handlers/pages.js +20 -14
  95. package/lib/tools/auth0/handlers/prompts.js +1 -0
  96. package/lib/tools/auth0/handlers/resourceServers.js +28 -15
  97. package/lib/tools/auth0/handlers/roles.js +61 -32
  98. package/lib/tools/auth0/handlers/rules.js +55 -32
  99. package/lib/tools/auth0/handlers/rulesConfigs.js +12 -6
  100. package/lib/tools/auth0/handlers/tenant.js +8 -4
  101. package/lib/tools/auth0/handlers/triggers.js +11 -12
  102. package/lib/tools/auth0/index.js +15 -31
  103. package/lib/tools/auth0/schema.js +7 -27
  104. package/lib/tools/calculateChanges.js +149 -0
  105. package/lib/tools/constants.js +162 -154
  106. package/lib/tools/deploy.js +1 -1
  107. package/lib/tools/index.js +1 -1
  108. package/lib/tools/logger.js +14 -8
  109. package/lib/tools/utils.js +3 -144
  110. package/lib/tools/{ValidationError.js → validationError.js} +3 -1
  111. package/lib/types.js +2 -0
  112. package/lib/utils.js +12 -22
  113. package/package.json +9 -2
  114. package/tsconfig.json +2 -3
  115. package/typescript-migration-progress.sh +1 -1
@@ -56,15 +56,15 @@ exports.schema = {
56
56
  type: 'object',
57
57
  properties: {
58
58
  action_name: { type: 'string', enum: constants_1.default.ACTIONS_TRIGGERS },
59
- display_name: { type: 'string', default: '' }
60
- }
61
- }
62
- }
63
- }
59
+ display_name: { type: 'string', default: '' },
60
+ },
61
+ },
62
+ },
63
+ },
64
64
  };
65
65
  function isActionsDisabled(err) {
66
66
  const errorBody = lodash_1.default.get(err, 'originalError.response.body') || {};
67
- return (err.statusCode === 403 && errorBody.errorCode === 'feature_not_enabled');
67
+ return err.statusCode === 403 && errorBody.errorCode === 'feature_not_enabled';
68
68
  }
69
69
  class TriggersHandler extends default_1.default {
70
70
  constructor(options) {
@@ -76,8 +76,7 @@ class TriggersHandler extends default_1.default {
76
76
  return this.existing;
77
77
  }
78
78
  // in case client version does not support actions
79
- if (!this.client.actions
80
- || typeof this.client.actions.getAllTriggers !== 'function') {
79
+ if (!this.client.actions || typeof this.client.actions.getAllTriggers !== 'function') {
81
80
  return [];
82
81
  }
83
82
  const triggerBindings = {};
@@ -87,12 +86,12 @@ class TriggersHandler extends default_1.default {
87
86
  for (let i = 0; i < triggers.length; i++) {
88
87
  const triggerId = triggers[i];
89
88
  const { bindings } = yield this.client.actions.getTriggerBindings({
90
- trigger_id: triggerId
89
+ trigger_id: triggerId,
91
90
  });
92
91
  if (bindings.length > 0) {
93
92
  triggerBindings[triggerId] = bindings.map((binding) => ({
94
93
  action_name: binding.action.name,
95
- display_name: binding.display_name
94
+ display_name: binding.display_name,
96
95
  }));
97
96
  }
98
97
  }
@@ -123,9 +122,9 @@ class TriggersHandler extends default_1.default {
123
122
  const bindings = data.map((binding) => ({
124
123
  ref: {
125
124
  type: 'action_name',
126
- value: binding.action_name
125
+ value: binding.action_name,
127
126
  },
128
- display_name: binding.display_name
127
+ display_name: binding.display_name,
129
128
  }));
130
129
  yield this.client.actions.updateTriggerBindings({ trigger_id: name }, { bindings });
131
130
  this.didUpdate({ trigger_id: name });
@@ -1,27 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -38,12 +15,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
38
15
  const ajv_1 = __importDefault(require("ajv/lib/ajv"));
39
16
  const client_1 = __importDefault(require("./client"));
40
17
  const schema_1 = __importDefault(require("./schema"));
41
- const handlers = __importStar(require("./handlers"));
42
- const defaultOrder = 50;
18
+ const handlers_1 = __importDefault(require("./handlers"));
43
19
  function sortByOrder(toSort, stage) {
20
+ const defaultOrder = 50;
44
21
  const sorted = [...toSort];
45
22
  sorted.sort((a, b) => {
23
+ //@ts-ignore because this doesn't actually work. TODO: apply stage order
46
24
  const aOrder = a[stage].order || defaultOrder;
25
+ //@ts-ignore because this doesn't actually work. TODO: apply stage order
47
26
  const bOrder = b[stage].order || defaultOrder;
48
27
  return aOrder - bOrder;
49
28
  });
@@ -54,19 +33,24 @@ class Auth0 {
54
33
  this.client = (0, client_1.default)(client);
55
34
  this.config = config;
56
35
  this.assets = assets;
57
- this.handlers = [];
58
- Object.values(handlers).forEach((h) => {
59
- const handler = new h.default({ client: this.client, config });
60
- this.handlers.push(handler);
36
+ this.handlers = Object.values(handlers_1.default)
37
+ .map((handler) => {
38
+ //@ts-ignore because class expects `type` property but gets directly injected into class constructors
39
+ return new handler.default({ client: this.client, config: this.config });
40
+ })
41
+ .filter((handler) => {
42
+ const excludedAssetTypes = config('AUTH0_EXCLUDED') || [];
43
+ return !excludedAssetTypes.includes(handler.type);
61
44
  });
62
45
  }
63
46
  runStage(stage) {
64
47
  return __awaiter(this, void 0, void 0, function* () {
65
48
  // Sort by priority
66
- for (const handler of sortByOrder(this.handlers, stage)) { // eslint-disable-line
49
+ for (const handler of sortByOrder(this.handlers, stage)) {
50
+ // eslint-disable-line
67
51
  try {
68
52
  const stageFn = Object.getPrototypeOf(handler)[stage];
69
- this.assets = Object.assign(Object.assign({}, this.assets), (yield stageFn.apply(handler, [this.assets])) || {});
53
+ this.assets = Object.assign(Object.assign({}, this.assets), ((yield stageFn.apply(handler, [this.assets])) || {}));
70
54
  }
71
55
  catch (err) {
72
56
  err.type = handler.type;
@@ -1,34 +1,14 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
4
  };
25
5
  Object.defineProperty(exports, "__esModule", { value: true });
26
- const handlers = __importStar(require("./handlers"));
27
- const typesSchema = Object.entries(handlers).reduce((map, [name, obj]) => {
6
+ const handlers_1 = __importDefault(require("./handlers"));
7
+ const typesSchema = Object.entries(handlers_1.default).reduce((map, [name, obj]) => {
28
8
  map[name] = obj.schema; //eslint-disable-line
29
9
  return map;
30
10
  }, {});
31
- const excludeSchema = Object.entries(handlers).reduce((map, [name, obj]) => {
11
+ const excludeSchema = Object.entries(handlers_1.default).reduce((map, [name, obj]) => {
32
12
  if (obj.excludeSchema) {
33
13
  map[name] = obj.excludeSchema;
34
14
  }
@@ -40,7 +20,7 @@ exports.default = {
40
20
  properties: Object.assign(Object.assign({}, typesSchema), { exclude: {
41
21
  type: 'object',
42
22
  properties: Object.assign({}, excludeSchema),
43
- default: {}
23
+ default: {},
44
24
  } }),
45
- additionalProperties: false
25
+ additionalProperties: false,
46
26
  };
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.calculateChanges = exports.processChangedObjectFields = void 0;
7
+ const logger_1 = __importDefault(require("./logger"));
8
+ /**
9
+ * @template T
10
+ * @param {typeof import('./auth0/handlers/default').default} handler
11
+ * @param {T} desiredAssetState
12
+ * @param {T} currentAssetState
13
+ * @param {string[]} [objectFields=[]]
14
+ * @param {boolean} [allowDelete=false]
15
+ * @returns T
16
+ */
17
+ function processChangedObjectFields({ handler, desiredAssetState, currentAssetState, allowDelete = false, }) {
18
+ const desiredAssetStateWithChanges = Object.assign({}, desiredAssetState);
19
+ // eslint-disable-next-line no-restricted-syntax
20
+ for (const fieldName of handler.objectFields) {
21
+ const areDesiredStateAndCurrentStateEmpty = Object.keys(desiredAssetState[fieldName] || {}).length === 0 &&
22
+ Object.keys(currentAssetState[fieldName] || {}).length === 0;
23
+ if (areDesiredStateAndCurrentStateEmpty) {
24
+ // If both the desired state and current state for a given object is empty, it is a no-op and can skip
25
+ // eslint-disable-next-line no-continue
26
+ continue;
27
+ }
28
+ // A desired state that omits the objectField OR that has it as an empty object should
29
+ // signal that all fields should be removed (subject to ALLOW_DELETE).
30
+ if (desiredAssetState[fieldName] && Object.keys(desiredAssetState[fieldName]).length) {
31
+ // Both the current and desired state have the object field. Here's where we need to map
32
+ // to the APIv2 protocol of setting `null` values for deleted fields.
33
+ // For new and modified properties of the object field, we can just pass them through to
34
+ // APIv2.
35
+ if (currentAssetState[fieldName]) {
36
+ // eslint-disable-next-line no-restricted-syntax
37
+ for (const currentObjectFieldPropertyName of Object.keys(currentAssetState[fieldName])) {
38
+ // Loop through each object property that exists currently
39
+ if (desiredAssetState[fieldName][currentObjectFieldPropertyName] === undefined) {
40
+ // If the object has a property that exists now but doesn't exist in the proposed state
41
+ if (allowDelete) {
42
+ desiredAssetStateWithChanges[fieldName][currentObjectFieldPropertyName] = null;
43
+ }
44
+ else {
45
+ // If deletes aren't allowed, do outright delete the property within the object
46
+ logger_1.default.warn(`Detected that the ${fieldName} of the following ${handler.name || handler.id || ''} should be deleted. Doing so may be destructive.\nYou can enable deletes by setting 'AUTH0_ALLOW_DELETE' to true in the config\n${handler.objString(currentAssetState)}`);
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }
52
+ else if (allowDelete) {
53
+ // If the desired state does not have the object field and the current state does, we
54
+ // should mark *all* properties for deletion by specifying an empty object.
55
+ //
56
+ // See: https://auth0.com/docs/users/metadata/manage-metadata-api#delete-user-metadata
57
+ desiredAssetStateWithChanges[fieldName] = {};
58
+ }
59
+ else {
60
+ delete desiredAssetStateWithChanges[fieldName];
61
+ logger_1.default.warn(`Detected that the ${fieldName} of the following ${handler.name || handler.id || ''} should be emptied. Doing so may be destructive.\nYou can enable deletes by setting 'AUTH0_ALLOW_DELETE' to true in the config\n${handler.objString(currentAssetState)}`);
62
+ }
63
+ }
64
+ return desiredAssetStateWithChanges;
65
+ }
66
+ exports.processChangedObjectFields = processChangedObjectFields;
67
+ function calculateChanges({ handler, assets, existing, identifiers = ['id', 'name'], allowDelete, }) {
68
+ // Calculate the changes required between two sets of assets.
69
+ const update = [];
70
+ let del = [...existing];
71
+ let create = [...assets];
72
+ const conflicts = [];
73
+ const findByKeyValue = (key, value, arr) => arr.find((e) => {
74
+ if (Array.isArray(key)) {
75
+ const values = key.map((k) => e[k]);
76
+ if (values.every((v) => v)) {
77
+ return value === values.join('-');
78
+ }
79
+ }
80
+ return e[key] === value;
81
+ });
82
+ const processAssets = (id, arr) => {
83
+ arr.forEach((asset) => {
84
+ const assetIdValue = (() => {
85
+ if (Array.isArray(id)) {
86
+ const values = id.map((i) => asset[i]);
87
+ if (values.every((v) => v)) {
88
+ return values.join('-');
89
+ }
90
+ }
91
+ return asset[id];
92
+ })();
93
+ if (assetIdValue !== undefined) {
94
+ const found = findByKeyValue(id, assetIdValue, del);
95
+ if (found !== undefined) {
96
+ // Delete from existing
97
+ del = del.filter((e) => e !== found);
98
+ // Delete from create as it's an update
99
+ create = create.filter((e) => e !== asset);
100
+ // Append identifiers to asset
101
+ update.push(Object.assign(Object.assign({}, identifiers.reduce((obj, i) => {
102
+ if (found[i])
103
+ obj[i] = found[i];
104
+ return obj;
105
+ }, {})), (handler.objectFields.length
106
+ ? processChangedObjectFields({
107
+ handler,
108
+ desiredAssetState: asset,
109
+ currentAssetState: found,
110
+ allowDelete,
111
+ })
112
+ : asset)));
113
+ }
114
+ }
115
+ });
116
+ };
117
+ // Loop through identifiers (in order) to try match assets to existing
118
+ // If existing then update if not create
119
+ // The remainder will be deleted
120
+ for (const id of identifiers) {
121
+ // eslint-disable-line
122
+ processAssets(id, [...create]);
123
+ }
124
+ // Check if there are assets with names that will conflict with existing names during the update process
125
+ // This will rename those assets to a temp random name first
126
+ // This assumes the first identifiers is the unique identifier
127
+ if (identifiers.includes('name')) {
128
+ const uniqueID = identifiers[0];
129
+ const futureAssets = [...create, ...update];
130
+ futureAssets.forEach((a) => {
131
+ // If the conflicting item is going to be deleted then skip
132
+ const inDeleted = del.filter((e) => e.name === a.name && e[uniqueID] !== a[uniqueID])[0];
133
+ if (!inDeleted) {
134
+ const conflict = existing.filter((e) => e.name === a.name && e[uniqueID] !== a[uniqueID])[0];
135
+ if (conflict) {
136
+ const temp = Math.random().toString(36).substr(2, 5);
137
+ conflicts.push(Object.assign(Object.assign({}, conflict), { name: `${conflict.name}-${temp}` }));
138
+ }
139
+ }
140
+ });
141
+ }
142
+ return {
143
+ del,
144
+ update,
145
+ conflicts,
146
+ create,
147
+ };
148
+ }
149
+ exports.calculateChanges = calculateChanges;
@@ -1,158 +1,166 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const constants = {};
4
- constants.RULES_DIRECTORY = 'rules';
5
- constants.RULES_STAGES = [
6
- 'login_success'
7
- ];
8
- constants.DEFAULT_RULE_STAGE = constants.RULES_STAGES[0]; // eslint-disable-line
9
- constants.HOOKS_HIDDEN_SECRET_VALUE = '_VALUE_NOT_SHOWN_';
10
- constants.HOOKS_DIRECTORY = 'hooks';
11
- constants.ACTIONS_DIRECTORY = 'actions';
12
- constants.TRIGGERS_DIRECTORY = 'triggers';
13
- constants.RULES_CONFIGS_DIRECTORY = 'rules-configs';
14
- constants.PAGES_DIRECTORY = 'pages';
15
- constants.PAGE_LOGIN = 'login';
16
- constants.PAGE_PASSWORD_RESET = 'password_reset';
17
- constants.PAGE_GUARDIAN_MULTIFACTOR = 'guardian_multifactor';
18
- constants.PAGE_ERROR = 'error_page';
19
- constants.PAGE_NAMES = [
20
- constants.PAGE_GUARDIAN_MULTIFACTOR + '.html',
21
- constants.PAGE_GUARDIAN_MULTIFACTOR + '.json',
22
- constants.PAGE_PASSWORD_RESET + '.html',
23
- constants.PAGE_PASSWORD_RESET + '.json',
24
- constants.PAGE_LOGIN + '.html',
25
- constants.PAGE_LOGIN + '.json',
26
- constants.PAGE_ERROR + '.html',
27
- constants.PAGE_ERROR + '.json'
28
- ];
29
- constants.DATABASE_CONNECTIONS_DIRECTORY = 'database-connections';
30
- constants.DATABASE_SCRIPTS_CHANGE_EMAIL = 'change_email';
31
- constants.DATABASE_SCRIPTS_GET_USER = 'get_user';
32
- constants.DATABASE_SCRIPTS = [
33
- constants.DATABASE_SCRIPTS_GET_USER,
34
- 'create',
35
- 'verify',
36
- 'login',
37
- 'change_password',
38
- 'delete',
39
- constants.DATABASE_SCRIPTS_CHANGE_EMAIL
40
- ];
41
- constants.DATABASE_SCRIPTS_NO_IMPORT = [
42
- constants.DATABASE_SCRIPTS_GET_USER,
43
- 'create',
44
- 'verify',
45
- 'login',
46
- 'change_password',
47
- 'delete'
48
- ];
49
- constants.DATABASE_SCRIPTS_IMPORT = [
50
- constants.DATABASE_SCRIPTS_GET_USER,
51
- 'login'
52
- ];
53
- constants.EMAIL_TEMPLATES_DIRECTORY = 'emails';
54
- constants.EMAIL_VERIFY = 'verify_email';
55
- constants.EMAIL_VERIFY_BY_CODE = 'verify_email_by_code';
56
- constants.EMAIL_RESET = 'reset_email';
57
- constants.EMAIL_WELCOME = 'welcome_email';
58
- constants.EMAIL_BLOCKED = 'blocked_account';
59
- constants.EMAIL_STOLEN_CREDENTIALS = 'stolen_credentials';
60
- constants.EMAIL_ENROLLMENT = 'enrollment_email';
61
- constants.EMAIL_CHANGE_PASSWORD = 'change_password';
62
- constants.EMAIL_PASSWORD_RESET = 'password_reset';
63
- constants.EMAIL_MFA_OOB_CODE = 'mfa_oob_code';
64
- constants.EMAIL_USER_INVITATION = 'user_invitation';
65
- constants.EMAIL_TEMPLATES_NAMES = [
66
- constants.EMAIL_VERIFY + '.json',
67
- constants.EMAIL_VERIFY + '.html',
68
- constants.EMAIL_VERIFY_BY_CODE + '.json',
69
- constants.EMAIL_VERIFY_BY_CODE + '.html',
70
- constants.EMAIL_RESET + '.json',
71
- constants.EMAIL_RESET + '.html',
72
- constants.EMAIL_WELCOME + '.json',
73
- constants.EMAIL_WELCOME + '.html',
74
- constants.EMAIL_BLOCKED + '.json',
75
- constants.EMAIL_BLOCKED + '.html',
76
- constants.EMAIL_STOLEN_CREDENTIALS + '.json',
77
- constants.EMAIL_STOLEN_CREDENTIALS + '.html',
78
- constants.EMAIL_ENROLLMENT + '.json',
79
- constants.EMAIL_ENROLLMENT + '.html',
80
- constants.EMAIL_CHANGE_PASSWORD + '.json',
81
- constants.EMAIL_CHANGE_PASSWORD + '.html',
82
- constants.EMAIL_PASSWORD_RESET + '.json',
83
- constants.EMAIL_PASSWORD_RESET + '.html',
84
- constants.EMAIL_MFA_OOB_CODE + '.json',
85
- constants.EMAIL_MFA_OOB_CODE + '.html',
86
- constants.EMAIL_USER_INVITATION + '.json',
87
- constants.EMAIL_USER_INVITATION + '.html'
88
- ];
89
- constants.EMAIL_TEMPLATES_TYPES = [
90
- 'verify_email',
91
- 'verify_email_by_code',
92
- 'reset_email',
93
- 'welcome_email',
94
- 'blocked_account',
95
- 'stolen_credentials',
96
- 'enrollment_email',
97
- 'mfa_oob_code',
98
- 'change_password',
99
- 'password_reset',
100
- 'user_invitation'
101
- ];
102
- constants.ACTIONS_TRIGGERS = [
103
- 'post-login',
104
- 'credentials-exchange',
105
- 'pre-user-registration',
106
- 'post-user-registration',
107
- 'post-change-password',
108
- 'send-phone-message'
109
- ];
110
- constants.GUARDIAN_DIRECTORY = 'guardian';
111
- constants.GUARDIAN_FACTORS_DIRECTORY = 'factors';
112
- constants.GUARDIAN_PROVIDERS_DIRECTORY = 'providers';
113
- constants.GUARDIAN_TEMPLATES_DIRECTORY = 'templates';
114
- constants.GUARDIAN_FACTORS = [
115
- 'sms',
116
- 'push-notification',
117
- 'otp',
118
- 'email',
119
- 'duo',
120
- 'webauthn-roaming',
121
- 'webauthn-platform',
122
- 'recovery-code'
123
- ];
124
- constants.GUARDIAN_POLICIES = [
125
- 'all-applications',
126
- 'confidence-score'
127
- ];
128
- constants.GUARDIAN_PHONE_PROVIDERS = [
129
- 'auth0',
130
- 'twilio',
131
- 'phone-message-hook'
132
- ];
133
- constants.GUARDIAN_PHONE_MESSAGE_TYPES = [
134
- 'sms',
135
- 'voice'
136
- ];
137
- constants.GUARDIAN_FACTOR_TEMPLATES = [
138
- 'sms'
139
- ];
140
- constants.GUARDIAN_FACTOR_PROVIDERS = {
141
- sms: ['twilio'],
142
- 'push-notification': ['sns']
3
+ const PAGE_GUARDIAN_MULTIFACTOR = 'guardian_multifactor';
4
+ const PAGE_PASSWORD_RESET = 'password_reset';
5
+ const PAGE_LOGIN = 'login';
6
+ const PAGE_ERROR = 'error_page';
7
+ const RULES_STAGES = ['login_success'];
8
+ const DATABASE_SCRIPTS_GET_USER = 'get_user';
9
+ const DATABASE_SCRIPTS_CHANGE_EMAIL = 'change_email';
10
+ const EMAIL_VERIFY = 'verify_email';
11
+ const EMAIL_VERIFY_BY_CODE = 'verify_email_by_code';
12
+ const EMAIL_RESET = 'reset_email';
13
+ const EMAIL_WELCOME = 'welcome_email';
14
+ const EMAIL_BLOCKED = 'blocked_account';
15
+ const EMAIL_STOLEN_CREDENTIALS = 'stolen_credentials';
16
+ const EMAIL_ENROLLMENT = 'enrollment_email';
17
+ const EMAIL_CHANGE_PASSWORD = 'change_password';
18
+ const EMAIL_PASSWORD_RESET = 'password_reset';
19
+ const EMAIL_MFA_OOB_CODE = 'mfa_oob_code';
20
+ const EMAIL_USER_INVITATION = 'user_invitation';
21
+ const UNIVERSAL_LOGIN_TEMPLATE = 'universal_login';
22
+ const constants = {
23
+ CONCURRENT_CALLS: 5,
24
+ RULES_DIRECTORY: 'rules',
25
+ RULES_STAGES,
26
+ DEFAULT_RULE_STAGE: RULES_STAGES[0],
27
+ HOOKS_HIDDEN_SECRET_VALUE: '_VALUE_NOT_SHOWN_',
28
+ HOOKS_DIRECTORY: 'hooks',
29
+ ACTIONS_DIRECTORY: 'actions',
30
+ TRIGGERS_DIRECTORY: 'triggers',
31
+ RULES_CONFIGS_DIRECTORY: 'rules-configs',
32
+ PAGES_DIRECTORY: 'pages',
33
+ PAGE_LOGIN,
34
+ PAGE_GUARDIAN_MULTIFACTOR,
35
+ PAGE_PASSWORD_RESET,
36
+ PAGE_ERROR,
37
+ DATABASE_CONNECTIONS_DIRECTORY: 'database-connections',
38
+ DATABASE_SCRIPTS_CHANGE_EMAIL,
39
+ DATABASE_SCRIPTS_GET_USER,
40
+ EMAIL_TEMPLATES_TYPES: [
41
+ 'verify_email',
42
+ 'verify_email_by_code',
43
+ 'reset_email',
44
+ 'welcome_email',
45
+ 'blocked_account',
46
+ 'stolen_credentials',
47
+ 'enrollment_email',
48
+ 'mfa_oob_code',
49
+ 'change_password',
50
+ 'password_reset',
51
+ 'user_invitation',
52
+ ],
53
+ ACTIONS_TRIGGERS: [
54
+ 'post-login',
55
+ 'credentials-exchange',
56
+ 'pre-user-registration',
57
+ 'post-user-registration',
58
+ 'post-change-password',
59
+ 'send-phone-message',
60
+ ],
61
+ EMAIL_TEMPLATES_DIRECTORY: 'emails',
62
+ EMAIL_VERIFY,
63
+ EMAIL_VERIFY_BY_CODE,
64
+ EMAIL_RESET,
65
+ EMAIL_WELCOME,
66
+ EMAIL_BLOCKED,
67
+ EMAIL_STOLEN_CREDENTIALS,
68
+ EMAIL_ENROLLMENT,
69
+ EMAIL_CHANGE_PASSWORD,
70
+ EMAIL_PASSWORD_RESET,
71
+ EMAIL_MFA_OOB_CODE,
72
+ EMAIL_USER_INVITATION,
73
+ GUARDIAN_DIRECTORY: 'guardian',
74
+ GUARDIAN_FACTORS_DIRECTORY: 'factors',
75
+ GUARDIAN_PROVIDERS_DIRECTORY: 'providers',
76
+ GUARDIAN_TEMPLATES_DIRECTORY: 'templates',
77
+ UNIVERSAL_LOGIN_TEMPLATE,
78
+ RESOURCE_SERVERS_DIRECTORY: 'resource-servers',
79
+ RESOURCE_SERVERS_CLIENT_NAME: 'resourceServers',
80
+ RESOURCE_SERVERS_MANAGEMENT_API_NAME: 'Auth0 Management API',
81
+ RESOURCE_SERVERS_ID_NAME: 'id',
82
+ CLIENTS_DIRECTORY: 'clients',
83
+ CLIENTS_GRANTS_DIRECTORY: 'grants',
84
+ BRANDING_DIRECTORY: 'branding',
85
+ BRANDING_TEMPLATES_DIRECTORY: 'templates',
86
+ BRANDING_TEMPLATES_YAML_DIRECTORY: 'branding_templates',
87
+ CLIENTS_CLIENT_NAME: 'clients',
88
+ CLIENTS_CLIENT_ID_NAME: 'client_id',
89
+ CONNECTIONS_DIRECTORY: 'connections',
90
+ CONNECTIONS_CLIENT_NAME: 'connections',
91
+ CONNECTIONS_ID_NAME: 'id',
92
+ ROLES_DIRECTORY: 'roles',
93
+ ATTACK_PROTECTION_DIRECTORY: 'attack-protection',
94
+ GUARDIAN_FACTORS: [
95
+ 'sms',
96
+ 'push-notification',
97
+ 'otp',
98
+ 'email',
99
+ 'duo',
100
+ 'webauthn-roaming',
101
+ 'webauthn-platform',
102
+ 'recovery-code',
103
+ ],
104
+ GUARDIAN_POLICIES: ['all-applications', 'confidence-score'],
105
+ GUARDIAN_PHONE_PROVIDERS: ['auth0', 'twilio', 'phone-message-hook'],
106
+ GUARDIAN_PHONE_MESSAGE_TYPES: ['sms', 'voice'],
107
+ GUARDIAN_FACTOR_TEMPLATES: ['sms'],
108
+ GUARDIAN_FACTOR_PROVIDERS: {
109
+ sms: ['twilio'],
110
+ 'push-notification': ['sns'],
111
+ },
112
+ PAGE_NAMES: [
113
+ `${PAGE_GUARDIAN_MULTIFACTOR}.html`,
114
+ `${PAGE_GUARDIAN_MULTIFACTOR}.json`,
115
+ `${PAGE_PASSWORD_RESET}.html`,
116
+ `${PAGE_PASSWORD_RESET}.json`,
117
+ `${PAGE_LOGIN}.html`,
118
+ `${PAGE_LOGIN}.json`,
119
+ `${PAGE_ERROR}.html`,
120
+ `${PAGE_ERROR}.json`,
121
+ ],
122
+ DATABASE_SCRIPTS: [
123
+ DATABASE_SCRIPTS_GET_USER,
124
+ 'create',
125
+ 'verify',
126
+ 'login',
127
+ 'change_password',
128
+ 'delete',
129
+ DATABASE_SCRIPTS_CHANGE_EMAIL,
130
+ ],
131
+ DATABASE_SCRIPTS_NO_IMPORT: [
132
+ DATABASE_SCRIPTS_GET_USER,
133
+ 'create',
134
+ 'verify',
135
+ 'login',
136
+ 'change_password',
137
+ 'delete',
138
+ ],
139
+ DATABASE_SCRIPTS_IMPORT: [DATABASE_SCRIPTS_GET_USER, 'login'],
140
+ EMAIL_TEMPLATES_NAMES: [
141
+ `${EMAIL_VERIFY}.json`,
142
+ `${EMAIL_VERIFY}.html`,
143
+ `${EMAIL_VERIFY_BY_CODE}.json`,
144
+ `${EMAIL_VERIFY_BY_CODE}.html`,
145
+ `${EMAIL_RESET}.json`,
146
+ `${EMAIL_RESET}.html`,
147
+ `${EMAIL_WELCOME}.json`,
148
+ `${EMAIL_WELCOME}.html`,
149
+ `${EMAIL_BLOCKED}.json`,
150
+ `${EMAIL_BLOCKED}.html`,
151
+ `${EMAIL_STOLEN_CREDENTIALS}.json`,
152
+ `${EMAIL_STOLEN_CREDENTIALS}.html`,
153
+ `${EMAIL_ENROLLMENT}.json`,
154
+ `${EMAIL_ENROLLMENT}.html`,
155
+ `${EMAIL_CHANGE_PASSWORD}.json`,
156
+ `${EMAIL_CHANGE_PASSWORD}.html`,
157
+ `${EMAIL_PASSWORD_RESET}.json`,
158
+ `${EMAIL_PASSWORD_RESET}.html`,
159
+ `${EMAIL_MFA_OOB_CODE}.json`,
160
+ `${EMAIL_MFA_OOB_CODE}.html`,
161
+ `${EMAIL_USER_INVITATION}.json`,
162
+ `${EMAIL_USER_INVITATION}.html`,
163
+ ],
164
+ SUPPORTED_BRANDING_TEMPLATES: [UNIVERSAL_LOGIN_TEMPLATE],
143
165
  };
144
- constants.RESOURCE_SERVERS_DIRECTORY = 'resource-servers';
145
- constants.RESOURCE_SERVERS_CLIENT_NAME = 'resourceServers';
146
- constants.RESOURCE_SERVERS_MANAGEMENT_API_NAME = 'Auth0 Management API';
147
- constants.RESOURCE_SERVERS_ID_NAME = 'id';
148
- constants.CLIENTS_DIRECTORY = 'clients';
149
- constants.CLIENTS_GRANTS_DIRECTORY = 'grants';
150
- constants.CLIENTS_CLIENT_NAME = 'clients';
151
- constants.CLIENTS_CLIENT_ID_NAME = 'client_id';
152
- constants.CONNECTIONS_DIRECTORY = 'connections';
153
- constants.CONNECTIONS_CLIENT_NAME = 'connections';
154
- constants.CONNECTIONS_ID_NAME = 'id';
155
- constants.CONCURRENT_CALLS = 5;
156
- constants.ROLES_DIRECTORY = 'roles';
157
- constants.ATTACK_PROTECTION_DIRECTORY = 'attack-protection';
158
166
  exports.default = constants;