Skip to content

Commit

Permalink
feat(guardian): support for policies, selected-provider, message-types
Browse files Browse the repository at this point in the history
  • Loading branch information
pmalouin committed Jun 23, 2020
1 parent 2f41322 commit f13322a
Show file tree
Hide file tree
Showing 4 changed files with 762 additions and 8 deletions.
172 changes: 172 additions & 0 deletions src/management/GuardianManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,48 @@ var GuardianManager = function(options) {
guardianFactorsProvidersAuth0RestClient,
options.retry
);

/**
* Provides an abstraction layer for retrieving Guardian policies.
*
* @type {external:RestClient}
*/
var guardianPoliciesAuth0RestClient = new Auth0RestClient(
options.baseUrl + '/guardian/policies',
clientOptions,
options.tokenProvider
);
this.policies = new RetryRestClient(guardianPoliciesAuth0RestClient, options.retry);

/**
* Provides an abstraction layer for retrieving a Guardian factor selected provider.
*
* @type {external:RestClient}
*/
var guardianFactorsSelectedProviderAuth0RestClient = new Auth0RestClient(
options.baseUrl + '/guardian/factors/:name/selected-provider',
clientOptions,
options.tokenProvider
);
this.factorsSelectedProvider = new RetryRestClient(
guardianFactorsSelectedProviderAuth0RestClient,
options.retry
);

/**
* Provides an abstraction layer for retrieving Guardian factor message types.
*
* @type {external:RestClient}
*/
var guardianFactorsMessageTypesAuth0RestClient = new Auth0RestClient(
options.baseUrl + '/guardian/factors/:name/message-types',
clientOptions,
options.tokenProvider
);
this.factorsMessageTypes = new RetryRestClient(
guardianFactorsMessageTypesAuth0RestClient,
options.retry
);
};

/**
Expand Down Expand Up @@ -280,4 +322,134 @@ utils.wrapPropertyMethod(GuardianManager, 'updateFactorTemplates', 'factorsTempl
*/
utils.wrapPropertyMethod(GuardianManager, 'updateFactor', 'factors.update');

/**
* Get enabled Guardian policies
*
* @method getPolicies
* @memberOf module:management.GuardianManager.prototype
*
* @example
* management.guardian.getPolicies(function (err, policies) {
* console.log(policies);
* });
*
* @param {Function} [cb] Callback function.
*
* @return {Promise|undefined}
*/
utils.wrapPropertyMethod(GuardianManager, 'getPolicies', 'policies.get');

/**
* Update enabled Guardian policies
*
* @method updatePolicies
* @memberOf module:management.GuardianManager.prototype
*
* @example
* management.guardian.updatePolicies({}, [
* 'all-applications'
* ], function (err, policies) {
* console.log(policies);
* });
*
* @param {Object} params Parameters.
* @param {String[]} data Policies to enable. Empty array disables all policies.
* @param {Function} [cb] Callback function.
*
* @return {Promise|undefined}
*/
utils.wrapPropertyMethod(GuardianManager, 'updatePolicies', 'policies.update');

/**
* Get the Guardian factor's selected provider
*
* @method getFactorSelectedProvider
* @memberOf module:management.GuardianManager.prototype
*
* @example
* management.guardian.getFactorSelectedProvider({ name: 'phone' }, function (err, selectedProvider) {
* console.log(selectedProvider);
* });
*
* @param {Object} params Factor provider parameters.
* @param {String} params.name Factor name (only `"phone"` is supported).
* @param {Function} [cb] Callback function.
*
* @return {Promise|undefined}
*/
utils.wrapPropertyMethod(
GuardianManager,
'getFactorSelectedProvider',
'factorsSelectedProvider.get'
);

/**
* Update the Guardian factor's selected provider
*
* @method updateFactorSelectedProvider
* @memberOf module:management.GuardianManager.prototype
*
* @example
* management.guardian.updateFactorSelectedProvider({ name: 'phone' }, {
* provider: 'twilio'
* }, function (err, factor) {
* console.log(factor);
* });
*
* @param {Object} params Factor provider parameters.
* @param {String} params.name Factor name (only `"phone"` is supported).
* @param {Object} data Updated selected provider data.
* @param {String} data.provider Name of the selected provider
* @param {Function} [cb] Callback function.
*
* @return {Promise|undefined}
*/
utils.wrapPropertyMethod(
GuardianManager,
'updateFactorSelectedProvider',
'factorsSelectedProvider.update'
);

/**
* Get the Guardian factor's message types
*
* @method getFactorMessageTypes
* @memberOf module:management.GuardianManager.prototype
*
* @example
* management.guardian.getFactorMessageTypes({ name: 'phone' }, function (err, messageTypes) {
* console.log(messageTypes);
* });
*
* @param {Object} params Factor provider parameters.
* @param {String} params.name Factor name (only `"phone"` is supported).
* @param {Function} [cb] Callback function.
*
* @return {Promise|undefined}
*/
utils.wrapPropertyMethod(GuardianManager, 'getFactorMessageTypes', 'factorsMessageTypes.get');

/**
* Update the Guardian factor's message types
*
* @method updateFactorMessageTypes
* @memberOf module:management.GuardianManager.prototype
*
* @example
* management.guardian.updateFactorMessageTypes({ name: 'phone' }, {
* message_types: ['sms', 'voice']
* }, function (err, factor) {
* console.log(factor);
* });
*
* @param {Object} params Factor provider parameters.
* @param {String} params.name Factor name (only `"phone"` is supported).
* @param {Object} data Updated selected provider data.
* @param {String[]} data.message_types Message types (only `"sms"` and `"voice"` are supported).
* @param {Function} [cb] Callback function.
*
* @return {Promise|undefined}
*/
utils.wrapPropertyMethod(GuardianManager, 'updateFactorMessageTypes', 'factorsMessageTypes.update');

module.exports = GuardianManager;
138 changes: 138 additions & 0 deletions src/management/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2696,6 +2696,144 @@ utils.wrapPropertyMethod(
*/
utils.wrapPropertyMethod(ManagementClient, 'updateGuardianFactor', 'guardian.updateFactor');

/**
* Get enabled Guardian policies
*
* @method getGuardianPolicies
* @memberOf module:management.ManagementClient.prototype
*
* @example
* management.getGuardianPolicies(function (err, policies) {
* console.log(policies);
* });
*
* @param {Function} [cb] Callback function.
*
* @return {Promise|undefined}
*/
utils.wrapPropertyMethod(ManagementClient, 'getGuardianPolicies', 'guardian.getPolicies');

/**
* Update enabled Guardian policies
*
* @method updateGuardianPolicies
* @memberOf module:management.ManagementClient.prototype
*
* @example
* management.updateGuardianPolicies({}, [
* 'all-applications'
* ], function (err, policies) {
* console.log(policies);
* });
*
* @param {Object} params Parameters.
* @param {String[]} data Policies to enable. Empty array disables all policies.
* @param {Function} [cb] Callback function.
*
* @return {Promise|undefined}
*/
utils.wrapPropertyMethod(ManagementClient, 'updateGuardianPolicies', 'guardian.updatePolicies');

/**
* Get the Guardian factor's selected provider
*
* @method getGuardianFactorSelectedProvider
* @memberOf module:management.ManagementClient.prototype
*
* @example
* management.getGuardianFactorSelectedProvider({ name: 'phone' }, function (err, selectedProvider) {
* console.log(selectedProvider);
* });
*
* @param {Object} params Factor provider parameters.
* @param {String} params.name Factor name (only `"phone"` is supported).
* @param {Function} [cb] Callback function.
*
* @return {Promise|undefined}
*/
utils.wrapPropertyMethod(
ManagementClient,
'getGuardianFactorSelectedProvider',
'guardian.getFactorSelectedProvider'
);

/**
* Update the Guardian factor's selected provider
*
* @method updateGuardianFactorSelectedProvider
* @memberOf module:management.ManagementClient.prototype
*
* @example
* management.updateGuardianFactorSelectedProvider({ name: 'phone' }, {
* provider: 'twilio'
* }, function (err, factor) {
* console.log(factor);
* });
*
* @param {Object} params Factor provider parameters.
* @param {String} params.name Factor name (only `"phone"` is supported).
* @param {Object} data Updated selected provider data.
* @param {String} data.provider Name of the selected provider
* @param {Function} [cb] Callback function.
*
* @return {Promise|undefined}
*/
utils.wrapPropertyMethod(
ManagementClient,
'updateGuardianFactorSelectedProvider',
'guardian.updateFactorSelectedProvider'
);

/**
* Get the Guardian factor's message types
*
* @method getGuardianFactorMessageTypes
* @memberOf module:management.ManagementClient.prototype
*
* @example
* management.getGuardianFactorMessageTypes({ name: 'phone' }, function (err, messageTypes) {
* console.log(messageTypes);
* });
*
* @param {Object} params Factor provider parameters.
* @param {String} params.name Factor name (only `"phone"` is supported).
* @param {Function} [cb] Callback function.
*
* @return {Promise|undefined}
*/
utils.wrapPropertyMethod(
ManagementClient,
'getGuardianFactorMessageTypes',
'guardian.getFactorMessageTypes'
);

/**
* Update the Guardian factor's message types
*
* @method updateGuardianFactorMessageTypes
* @memberOf module:management.ManagementClient.prototype
*
* @example
* management.updateGuardianFactorMessageTypes({ name: 'phone' }, {
* message_types: ['sms', 'voice']
* }, function (err, factor) {
* console.log(factor);
* });
*
* @param {Object} params Factor provider parameters.
* @param {String} params.name Factor name (only `"phone"` is supported).
* @param {Object} data Updated selected provider data.
* @param {String[]} data.message_types Message types (only `"sms"` and `"voice"` are supported).
* @param {Function} [cb] Callback function.
*
* @return {Promise|undefined}
*/
utils.wrapPropertyMethod(
ManagementClient,
'updateGuardianFactorMessageTypes',
'guardian.updateFactorMessageTypes'
);

/**
* Get all roles.
*
Expand Down
Loading

0 comments on commit f13322a

Please sign in to comment.