UNPKG

auth0

Version:
1,723 lines (1,631 loc) 110 kB
/** @module management */ var util = require('util'); var utils = require('../utils'); var jsonToBase64 = utils.jsonToBase64; var generateClientInfo = utils.generateClientInfo; var ArgumentError = require('rest-facade').ArgumentError; // Managers. var ClientsManager = require('./ClientsManager'); var ClientGrantsManager = require('./ClientGrantsManager'); var GrantsManager = require('./GrantsManager'); var UsersManager = require('./UsersManager'); var UserBlocksManager = require('./UserBlocksManager'); var ConnectionsManager = require('./ConnectionsManager'); var BlacklistedTokensManager = require('./BlacklistedTokensManager'); var RulesManager = require('./RulesManager'); var DeviceCredentialsManager = require('./DeviceCredentialsManager'); var EmailProviderManager = require('./EmailProviderManager'); var StatsManager = require('./StatsManager'); var TenantManager = require('./TenantManager'); var JobsManager = require('./JobsManager'); var TicketsManager = require('./TicketsManager'); var LogsManager = require('./LogsManager'); var LogStreamsManager = require('./LogStreamsManager'); var ResourceServersManager = require('./ResourceServersManager'); var ManagementTokenProvider = require('./ManagementTokenProvider'); var RulesConfigsManager = require('./RulesConfigsManager'); var EmailTemplatesManager = require('./EmailTemplatesManager'); var GuardianManager = require('./GuardianManager'); var CustomDomainsManager = require('./CustomDomainsManager'); var RolesManager = require('./RolesManager'); var HooksManager = require('./HooksManager'); var BrandingManager = require('./BrandingManager'); var MigrationsManager = require('./MigrationsManager'); var PromptsManager = require('./PromptsManager'); var BASE_URL_FORMAT = 'https://%s/api/v2'; var MANAGEMENT_API_AUD_FORMAT = 'https://%s/api/v2/'; /** * @class ManagementClient * Management API SDK. * * The Auth0 Management API is meant to be used by back-end servers or trusted * parties performing administrative tasks. Generally speaking, anything that * can be done through the Auth0 dashboard (and more) can also be done through * this API. * @constructor * @memberOf module:management * * @example <caption> * Initialize your client class with an API v2 token (you can generate one * <a href="https://auth0.com/docs/apiv2">here</a>) and a domain. * </caption> * * var ManagementClient = require('auth0').ManagementClient; * var auth0 = new ManagementClient({ * domain: '{YOUR_ACCOUNT}.auth0.com', * token: '{YOUR_API_V2_TOKEN}' * }); * * * @example <caption> * Initialize your client class, by using a Non Interactive Client to fetch an access_token * via the Client Credentials Grant. * </caption> * * var ManagementClient = require('auth0').ManagementClient; * var auth0 = new ManagementClient({ * domain: '{YOUR_ACCOUNT}.auth0.com', * clientId: '{YOUR_NON_INTERACTIVE_CLIENT_ID}', * clientSecret: '{YOUR_NON_INTERACTIVE_CLIENT_SECRET}', * scope: "read:users write:users", * audience: 'https://{YOUR_TENANT_NAME}.auth0.com/api/v2/', * tokenProvider: { * enableCache: true, * cacheTTLInSeconds: 10 * } * }); * * @param {Object} options Options for the ManagementClient SDK. * If a token is provided only the domain is required, other parameters are ignored. * If no token is provided domain, clientId, clientSecret and scopes are required * @param {String} options.domain ManagementClient server domain. * @param {String} [options.token] API access token. * @param {String} [options.clientId] Management API Non Interactive Client Id. * @param {String} [options.clientSecret] Management API Non Interactive Client Secret. * @param {String} [options.audience] Management API Audience. By default is your domain's, e.g. the domain is `tenant.auth0.com` and the audience is `http://tenant.auth0.com/api/v2/` * @param {String} [options.scope] Management API Scopes. * @param {Boolean} [options.tokenProvider.enableCache=true] Enabled or Disable Cache. * @param {Number} [options.tokenProvider.cacheTTLInSeconds] By default the `expires_in` value will be used to determine the cached time of the token, this can be overridden. * @param {Boolean} [options.retry.enabled=true] Enabled or Disable Retry Policy functionality. * @param {Number} [options.retry.maxRetries=10] Retry failed requests X times. * @param {Object} [options.headers] Additional headers that will be added to the outgoing requests. * */ var ManagementClient = function(options) { if (!options || typeof options !== 'object') { throw new ArgumentError('Management API SDK options must be an object'); } if (!options.domain || options.domain.length === 0) { throw new ArgumentError('Must provide a domain'); } var baseUrl = util.format(BASE_URL_FORMAT, options.domain); var userAgent = options.userAgent || 'node.js/' + process.version.replace('v', ''); var defaultHeaders = { 'User-Agent': 'node.js/' + process.version.replace('v', ''), 'Content-Type': 'application/json' }; var managerOptions = { headers: Object.assign(defaultHeaders, options.headers || {}), baseUrl: baseUrl }; if (options.token === undefined) { var config = Object.assign( { audience: util.format(MANAGEMENT_API_AUD_FORMAT, options.domain) }, options ); if (options.tokenProvider) { config.enableCache = options.tokenProvider.enableCache; config.cacheTTLInSeconds = options.tokenProvider.cacheTTLInSeconds; delete config.tokenProvider; } this.tokenProvider = new ManagementTokenProvider(config); managerOptions.tokenProvider = this.tokenProvider; } else if (typeof options.token !== 'string' || options.token.length === 0) { throw new ArgumentError('Must provide a token'); } else { this.tokenProvider = { getAccessToken: function() { return Promise.resolve(options.token); } }; managerOptions.headers['Authorization'] = 'Bearer ' + options.token; } if (options.telemetry !== false) { var clientInfo = options.clientInfo || generateClientInfo(); if ('string' === typeof clientInfo.name && clientInfo.name.length > 0) { var telemetry = jsonToBase64(clientInfo); managerOptions.headers['Auth0-Client'] = telemetry; } } managerOptions.retry = options.retry; /** * Simple abstraction for performing CRUD operations on the * clients endpoint. * * @type {ClientsManager} */ this.clients = new ClientsManager(managerOptions); /** * Simple abstraction for performing CRUD operations on the client grants * endpoint. * * @type {ClientGrantsManager} */ this.clientGrants = new ClientGrantsManager(managerOptions); /** * Simple abstraction for performing CRUD operations on the grants * endpoint. * * @type {GrantsManager} */ this.grants = new GrantsManager(managerOptions); /** * Simple abstraction for performing CRUD operations on the * users endpoint. * * @type {UsersManager} */ this.users = new UsersManager(managerOptions); /** * Simple abstraction for performing CRUD operations on the * user-blocks endpoint. * * @type {UserBlocksManager} */ this.userBlocks = new UserBlocksManager(managerOptions); /** * Simple abstraction for performing CRUD operations on the * guardian endpoint. * * @type {GuardianManager} */ this.guardian = new GuardianManager(managerOptions); /** * Simple abstraction for performing CRUD operations on the * custom domains endpoint. * * @type {CustomDomainsManager} */ this.customDomains = new CustomDomainsManager(managerOptions); /** * Simple abstraction for performing CRUD operations on the * connections endpoint. * * @type {ConnectionsManager} */ this.connections = new ConnectionsManager(managerOptions); /** * Simple abstraction for performing CRUD operations on the * device credentials endpoint. * * @type {DeviceCredentialsManager} */ this.deviceCredentials = new DeviceCredentialsManager(managerOptions); /** * Simple abstraction for performing CRUD operations on the * rules endpoint. * * @type {RulesManager} */ this.rules = new RulesManager(managerOptions); /** * Simple abstraction for performing CRUD operations on the * blacklisted tokens endpoint. * * @type {BlacklistedtokensManager} */ this.blacklistedTokens = new BlacklistedTokensManager(managerOptions); /** * Simple abstraction for performing CRUD operations on the * email provider endpoint. * * @type {EmailProviderManager} */ this.emailProvider = new EmailProviderManager(managerOptions); /** * ManagementClient account statistics manager. * * @type {StatsManager} */ this.stats = new StatsManager(managerOptions); /** * ManagementClient tenant settings manager. * * @type {TenantManager} */ this.tenant = new TenantManager(managerOptions); /** * Jobs manager. * * @type {JobsManager} */ this.jobs = new JobsManager(managerOptions); /** * Tickets manager. * * @type {TicketsManager} */ this.tickets = new TicketsManager(managerOptions); /** * Logs manager. * * @type {LogsManager} */ this.logs = new LogsManager(managerOptions); /** * Log Streams manager. * * @type {LogStreamsManager} */ this.logStreams = new LogStreamsManager(managerOptions); /** * Simple abstraction for performing CRUD operations on the * resource servers endpoint. * * @type {ResourceServersManager} */ this.resourceServers = new ResourceServersManager(managerOptions); /** * Simple abstraction for performing CRUD operations on * Auth0's Email Templates * * @type {EmailTemplatesManager} */ this.emailTemplates = new EmailTemplatesManager(managerOptions); /** * RulesConfigs manager. * * @type {RulesConfigsManager} */ this.rulesConfigs = new RulesConfigsManager(managerOptions); /** * Simple abstraction for performing CRUD operations on the * roles endpoint. * * @type {RolesManager} */ this.roles = new RolesManager(managerOptions); /** * Simple abstraction for performing CRUD operations on the * hooks endpoint. * * @type {HooksManager} */ this.hooks = new HooksManager(managerOptions); /** * Simple abstraction for performing CRUD operations on the * branding endpoint. * * @type {HooksManager} */ this.branding = new BrandingManager(managerOptions); /** * ManagementClient migrations manager. * * @type {MigrationsManager} */ this.migrations = new MigrationsManager(managerOptions); /** * Prompts Manager * * @type {PromptsManager} */ this.prompts = new PromptsManager(managerOptions); }; /** * Get all connections. * * @method getConnections * @memberOf module:management.ManagementClient.prototype * * @example <caption> * This method takes an optional object as first argument that may be used to * specify pagination settings. If pagination options are not present, * the first page of a limited number of results will be returned. * </caption> * * // Pagination settings. * var params = { * per_page: 10, * page: 0 * }; * * management.getConnections(params, function (err, connections) { * console.log(connections.length); * }); * * @param {Object} [params] Connections params. * @param {Number} [params.per_page] Number of results per page. * @param {Number} [params.page] Page number, zero indexed. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'getConnections', 'connections.getAll'); /** * Create a new connection. * * @method createConnection * @memberOf module:management.ManagementClient.prototype * * @example * management.createConnection(data, function (err) { * if (err) { * // Handle error. * } * * // Connection created. * }); * * @param {Object} data Connection data object. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'createConnection', 'connections.create'); /** * Get an Auth0 connection. * * @method getConnection * @memberOf module:management.ManagementClient.prototype * * @example * management.getConnection({ id: CONNECTION_ID }, function (err, connection) { * if (err) { * // Handle error. * } * * console.log(connection); * }); * * @param {Object} params Connection parameters. * @param {String} params.id Connection ID. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'getConnection', 'connections.get'); /** * Delete an existing connection. * * @method deleteConnection * @memberOf module:management.ManagementClient.prototype * * @example * management.deleteConnection({ id: CONNECTION_ID }, function (err) { * if (err) { * // Handle error. * } * * // Connection deleted. * }); * * @param {Object} params Connection parameters. * @param {String} params.id Connection ID. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'deleteConnection', 'connections.delete'); /** * Update an existing connection. * * @method updateConnection * @memberOf module:management.ManagementClient.prototype * * @example * var data = { name: 'newConnectionName' }; * var params = { id: CONNECTION_ID }; * * management.updateConnection(params, data, function (err, connection) { * if (err) { * // Handle error. * } * * console.log(connection.name); // 'newConnectionName' * }); * * @param {Object} params Connection parameters. * @param {String} params.id Connection ID. * @param {Object} data Updated connection data. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'updateConnection', 'connections.update'); /** * Get all Auth0 clients. * * @method getClients * @memberOf module:management.ManagementClient.prototype * * @example <caption> * This method takes an optional object as first argument that may be used to * specify pagination settings. If pagination options are not present, * the first page of a limited number of results will be returned. * </caption> * * // Pagination settings. * var params = { * per_page: 10, * page: 0 * }; * * management.getClients(params, function (err, clients) { * console.log(clients.length); * }); * * @param {Object} [params] Clients parameters. * @param {Number} [params.per_page] Number of results per page. * @param {Number} [params.page] Page number, zero indexed. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'getClients', 'clients.getAll'); /** * Get an Auth0 client. * * @method getClient * @memberOf module:management.ManagementClient.prototype * * @example * management.getClient({ client_id: CLIENT_ID }, function (err, client) { * if (err) { * // Handle error. * } * * console.log(client); * }); * * @param {Object} params Client parameters. * @param {String} params.client_id Application client ID. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'getClient', 'clients.get'); /** * Create an Auth0 client. * * @method createClient * @memberOf module:management.ManagementClient.prototype * * @example * management.createClient(data, function (err) { * if (err) { * // Handle error. * } * * // Client created. * }); * * @param {Object} data The client data object. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'createClient', 'clients.create'); /** * Update an Auth0 client. * * @method updateClient * @memberOf module:management.ManagementClient.prototype * * @example * var data = { name: 'newClientName' }; * var params = { client_id: CLIENT_ID }; * * management.updateClient(params, data, function (err, client) { * if (err) { * // Handle error. * } * * console.log(client.name); // 'newClientName' * }); * * @param {Object} params Client parameters. * @param {String} params.client_id Application client ID. * @param {Object} data Updated client data. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'updateClient', 'clients.update'); /** * Delete an Auth0 client. * * @method deleteClient * @memberOf module:management.ManagementClient.prototype * * @example * management.deleteClient({ client_id: CLIENT_ID }, function (err) { * if (err) { * // Handle error. * } * * // Client deleted. * }); * * @param {Object} params Client parameters. * @param {String} params.client_id Application client ID. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'deleteClient', 'clients.delete'); /** * Get all Auth0 Client Grants. * * @method getClientGrants * @memberOf module:management.ManagementClient.prototype * * @example <caption> * This method takes an optional object as first argument that may be used to * specify pagination settings. If pagination options are not present, * the first page of a limited number of results will be returned. * </caption> * * // Pagination settings. * var params = { * per_page: 10, * page: 0 * }; * * management.getClientGrants(params, function (err, grants) { * console.log(grants.length); * }); * * @param {Object} [params] Client Grants parameters. * @param {Number} [params.per_page] Number of results per page. * @param {Number} [params.page] Page number, zero indexed. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'getClientGrants', 'clientGrants.getAll'); /** * Create an Auth0 client grant. * * @method createClientGrant * @memberOf module:management.ManagementClient.prototype * * @example * management.clientGrants.create(data, function (err) { * if (err) { * // Handle error. * } * * // Client grant created. * }); * * @param {Object} data The client data object. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'createClientGrant', 'clientGrants.create'); /** * Update an Auth0 client grant. * * @method updateClientGrant * @memberOf module:management.ManagementClient.prototype * * @example * var data = { * client_id: CLIENT_ID, * audience: AUDIENCE, * scope: [] * }; * var params = { id: CLIENT_GRANT_ID }; * * management.clientGrants.update(params, data, function (err, grant) { * if (err) { * // Handle error. * } * * console.log(grant.id); * }); * * @param {Object} params Client parameters. * @param {String} params.id Client grant ID. * @param {Object} data Updated client data. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'updateClientGrant', 'clientGrants.update'); /** * Delete an Auth0 client grant. * * @method deleteClientGrant * @memberOf module:management.ManagementClient.prototype * * @example * management.clientGrants.delete({ id: GRANT_ID }, function (err) { * if (err) { * // Handle error. * } * * // Grant deleted. * }); * * @param {Object} params Client parameters. * @param {String} params.id Client grant ID. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'deleteClientGrant', 'clientGrants.delete'); /** * Get all Auth0 Grants. * * @method getGrants * @memberOf module:management.ManagementClient.prototype * * @example * var params = { * per_page: 10, * page: 0, * include_totals: true, * user_id: USER_ID, * client_id: CLIENT_ID, * audience: AUDIENCE * }; * * management.getGrants(params, function (err, grants) { * console.log(grants.length); * }); * * @param {Object} params Grants parameters. * @param {Number} params.per_page Number of results per page. * @param {Number} params.page Page number, zero indexed. * @param {Boolean} params.include_totals true if a query summary must be included in the result, false otherwise. Default false; * @param {String} params.user_id The user_id of the grants to retrieve. * @param {String} params.client_id The client_id of the grants to retrieve. * @param {String} params.audience The audience of the grants to retrieve. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'getGrants', 'grants.getAll'); /** * Delete an Auth0 grant. * * @method deleteGrant * @memberOf module:management.GrantsManager.prototype * * @example * var params = { * id: GRANT_ID, * user_id: USER_ID * }; * * management.deleteGrant(params, function (err) { * if (err) { * // Handle error. * } * * // Grant deleted. * }); * * @param {Object} params Grant parameters. * @param {String} params.id Grant ID. * @param {String} params.user_id The user_id of the grants to delete. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'deleteGrant', 'grants.delete'); /** * Create an Auth0 credential. * * @method createDevicePublicKey * @memberOf module:management.ManagementClient.prototype * * @example * management.createConnection(data, function (err) { * if (err) { * // Handle error. * } * * // Credential created. * }); * * @param {Object} data The device credential data object. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod( ManagementClient, 'createDevicePublicKey', 'deviceCredentials.createPublicKey' ); /** * Get all Auth0 credentials. * * @method getDeviceCredentials * @memberOf module:management.ManagementClient.prototype * * @example * var params = {user_id: "USER_ID"}; * * management.getDeviceCredentials(params, function (err, credentials) { * console.log(credentials.length); * }); * * @param {Object} params Credential parameters. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'getDeviceCredentials', 'deviceCredentials.getAll'); /** * Delete an Auth0 device credential. * * @method deleteDeviceCredential * @memberOf module:management.ManagementClient.prototype * * @example * var params = { id: CREDENTIAL_ID }; * * management.deleteDeviceCredential(params, function (err) { * if (err) { * // Handle error. * } * * // Credential deleted. * }); * * @param {Object} params Credential parameters. * @param {String} params.id Device credential ID. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'deleteDeviceCredential', 'deviceCredentials.delete'); /** * Get all rules. * * @method getRules * @memberOf module:management.ManagementClient.prototype * * @example <caption> * This method takes an optional object as first argument that may be used to * specify pagination settings. If pagination options are not present, * the first page of a limited number of results will be returned. * </caption> * * // Pagination settings. * var params = { * per_page: 10, * page: 0 * }; * * management.getRules(params, function (err, rules) { * console.log(rules.length); * }); * * @param {Object} [params] Rules parameters. * @param {Number} [params.per_page] Number of results per page. * @param {Number} [params.page] Page number, zero indexed. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'getRules', 'rules.getAll'); /** * Create a new rule. * * @method createRule * @memberOf module:management.ManagementClient.prototype * * @example * management.createRule(data, function (err) { * if (err) { * // Handle error. * } * * // Rule created. * }); * * @param {Object} data Rule data object. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'createRule', 'rules.create'); /** * Get an Auth0 rule. * * @method getRule * @memberOf module:management.ManagementClient.prototype * * @example * management.getRule({ id: RULE_ID }, function (err, rule) { * if (err) { * // Handle error. * } * * console.log(rule); * }); * * @param {Object} params Rule parameters. * @param {String} params.id Rule ID. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'getRule', 'rules.get'); /** * Delete an existing rule. * * @method deleteRule * @memberOf module:management.ManagementClient.prototype * * @example * auth0.deleteRule({ id: RULE_ID }, function (err) { * if (err) { * // Handle error. * } * * // Rule deleted. * }); * * @param {Object} params Rule parameters. * @param {String} params.id Rule ID. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'deleteRule', 'rules.delete'); /** * Update an existing rule. * * @method updateRule * @memberOf module:management.ManagementClient.prototype * * @example * var params = { id: RULE_ID }; * var data = { name: 'my-rule'}; * management.updateRule(params, data, function (err, rule) { * if (err) { * // Handle error. * } * * console.log(rule.name); // 'my-rule'. * }); * * @param {Object} params Rule parameters. * @param {String} params.id Rule ID. * @param {Object} data Updated rule data. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'updateRule', 'rules.update'); /** * Get all users. * * @method getUsers * @memberOf module:management.ManagementClient.prototype * * @example <caption> * This method takes an optional object as first argument that may be used to * specify pagination settings. If pagination options are not present, * the first page of a limited number of results will be returned. * </caption> * * // Pagination settings. * var params = { * search_engine: 'v3', * q: 'name:*jane*', * per_page: 10, * page: 0 * }; * * auth0.getUsers(params, function (err, users) { * console.log(users.length); * }); * * @param {Object} [params] Users params. * @param {Number} [params.search_engine] The version of the search engine to use. * @param {String} [params.q] User Search string to filter which users are returned. Follows Lucene query string syntax as documented at https://auth0.com/docs/api/management/v2#!/Users/get_users. * @param {Number} [params.per_page] Number of results per page. * @param {Number} [params.page] Page number, zero indexed. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'getUsers', 'users.getAll'); /** * Get users for a given email address * * @method getUsersByEmail * @memberOf module:management.ManagementClient.prototype * * @example <caption> * This method takes an email address as the first argument, * and returns all users with that email address * </caption> * * auth0.getUsersByEmail(email, function (err, users) { * console.log(users); * }); * * @param {String} [email] Email address of user(s) to find * @param {Object} [options] Additional options to pass to the endpoint * @param {String} [options.fields] Comma-separated list of fields to include or exclude in the result * @param {Boolean} [options.include_fields] Whether specified fields are to be included (true) or excluded (false). Defaults to true. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'getUsersByEmail', 'users.getByEmail'); /** * Get a user by its id. * * @method getUser * @memberOf module:management.ManagementClient.prototype * * @example * management.getUser({ id: USER_ID }, function (err, user) { * console.log(user); * }); * * @param {Object} data The user data object. * @param {String} data.id The user id. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'getUser', 'users.get'); /** * Delete all users. * * @method deleteAllUsers * @memberOf module:management.ManagementClient.prototype * * @example * management.deleteAllUsers(function (err) { * if (err) { * // Handle error. * } * * // Users deleted * }); * * @param {Function} [cb] Callback function * * @return {Promise|undefined} * * @deprecated This method will be removed in the next major release. */ utils.wrapPropertyMethod(ManagementClient, 'deleteAllUsers', 'users.deleteAll'); /** * Delete a user by its id. * * @method deleteUser * @memberOf module:management.ManagementClient.prototype * * @example * management.deleteUser({ id: USER_ID }, function (err) { * if (err) { * // Handle error. * } * * // User deleted. * }); * * @param {Object} params The user data object.. * @param {String} params.id The user id. * @param {Function} [cb] Callback function * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'deleteUser', 'users.delete'); /** * Create a new user. * * @method createUser * @memberOf module:management.ManagementClient.prototype * * @example * management.createUser(data, function (err) { * if (err) { * // Handle error. * } * * // User created. * }); * * @param {Object} data User data. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'createUser', 'users.create'); /** * Update a user by its id. * * @method updateUser * @memberOf module:management.ManagementClient.prototype * * @example * var params = { id: USER_ID }; * * management.updateUser(params, data, function (err, user) { * if (err) { * // Handle error. * } * * // Updated user. * console.log(user); * }); * * @param {Object} params The user parameters. * @param {String} params.id The user id. * @param {Object} data New user data. * @param {Function} [cb] Callback function * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'updateUser', 'users.update'); /** * Update the user metadata for a user. * * @method updateUserMetadata * @memberOf module:management.ManagementClient.prototype * * @example * var params = { id: USER_ID }; * var metadata = { * address: '123th Node.js Street' * }; * * management.updateUserMetadata(params, metadata, function (err, user) { * if (err) { * // Handle error. * } * * // Updated user. * console.log(user); * }); * * @param {Object} params The user data object.. * @param {String} params.id The user id. * @param {Object} metadata New user metadata. * @param {Function} [cb] Callback function * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'updateUserMetadata', 'users.updateUserMetadata'); /** * Update the app metadata for a user. * * @method updateAppMetadata * @memberOf module:management.ManagementClient.prototype * * @example * var params = { id: USER_ID }; * var metadata = { * foo: 'bar' * }; * * management.updateAppMetadata(params, metadata, function (err, user) { * if (err) { * // Handle error. * } * * // Updated user. * console.log(user); * }); * * @param {Object} params The user data object.. * @param {String} params.id The user id. * @param {Object} metadata New app metadata. * @param {Function} [cb] Callback function * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'updateAppMetadata', 'users.updateAppMetadata'); /** * Delete a multifactor provider for a user. * * @method deleteUserMultifactor * @memberOf module:management.ManagementClient.prototype * * @example * var params = { id: USER_ID, provider: MULTIFACTOR_PROVIDER }; * * management.deleteUserMultifactor(params, function (err, user) { * if (err) { * // Handle error. * } * * // Users accounts unlinked. * }); * * @param {Object} params Data object. * @param {String} params.id The user id. * @param {String} params.provider Multifactor provider. * @param {Function} [cb] Callback function * * @return {Promise|undefined} */ utils.wrapPropertyMethod( ManagementClient, 'deleteUserMultifactor', 'users.deleteMultifactorProvider' ); /** * Delete a multifactor provider for a user. * * @method deleteUserMultifcator * @memberOf module:management.ManagementClient.prototype * * @example * var params = { id: USER_ID, provider: MULTIFACTOR_PROVIDER }; * * management.deleteUserMultifcator(params, function (err, user) { * if (err) { * // Handle error. * } * * // Users accounts unlinked. * }); * * @param {Object} params Data object. * @param {String} params.id The user id. * @param {String} params.provider Multifactor provider. * @param {Function} [cb] Callback function * * @return {Promise|undefined} * * @deprecated The function name has a typo. * We're shipping this so it doesn't break compatibility. * Use {@link deleteUserMultifactor} instead. */ utils.wrapPropertyMethod( ManagementClient, 'deleteUserMultifcator', 'users.deleteMultifactorProvider' ); /** * Unlink the given accounts. * * @method unlinkUsers * @memberOf module:management.ManagementClient.prototype * * @example * var params = { id: USER_ID, provider: 'auht0', user_id: OTHER_USER_ID }; * * management.unlinkUsers(params, function (err, user) { * if (err) { * // Handle error. * } * * // Users accounts unlinked. * }); * * @param {Object} params Linked users data. * @param {String} params.id Primary user ID. * @param {String} params.provider Identity provider in use. * @param {String} params.user_id Secondary user ID. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'unlinkUsers', 'users.unlink'); /** * Link the user with another account. * * @method linkUsers * @memberOf module:management.ManagementClient.prototype * * @example * var userId = 'USER_ID'; * var params = { * user_id: 'OTHER_USER_ID', * connection_id: 'CONNECTION_ID' * }; * * management.linkUsers(userId, params, function (err, user) { * if (err) { * // Handle error. * } * * // Users linked. * }); * * @param {String} userId ID of the primary user. * @param {Object} params Secondary user data. * @param {String} params.user_id ID of the user to be linked. * @param {String} params.connection_id ID of the connection to be used. * @param {String} params.provider Identity provider of the secondary user account being linked. * @param {String} params.link_with JWT for the secondary account being linked. If sending this parameter, provider, user_id, and connection_id must not be sent. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'linkUsers', 'users.link'); /** * Get user's log events. * * @method getUserLogs * @memberOf module:management.ManagementClient.prototype * * @example * var params = { id: USER_ID, page: 0, per_page: 50, sort: 'date:-1', include_totals: true }; * * management.getUserLogs(params, function (err, logs) { * if (err) { * // Handle error. * } * * console.log(logs); * }); * * @param {Object} params Get logs data. * @param {String} params.id User id. * @param {Number} params.per_page Number of results per page. * @param {Number} params.page Page number, zero indexed. * @param {String} params.sort The field to use for sorting. Use field:order where order is 1 for ascending and -1 for descending. For example date:-1. * @param {Boolean} params.include_totals true if a query summary must be included in the result, false otherwise. Default false; * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'getUserLogs', 'users.logs'); /** * Get user's roles * * @method getUserRoles * @memberOf module:management.ManagementClient.prototype * * @example * var params = { id: USER_ID, page: 0, per_page: 50, sort: 'date:-1', include_totals: true }; * * management.getUserRoles(params, function (err, logs) { * if (err) { * // Handle error. * } * * console.log(logs); * }); * * @param {Object} params Get roles data. * @param {String} params.id User id. * @param {Number} params.per_page Number of results per page. * @param {Number} params.page Page number, zero indexed. * @param {String} params.sort The field to use for sorting. Use field:order where order is 1 for ascending and -1 for descending. For example date:-1. * @param {Boolean} params.include_totals true if a query summary must be included in the result, false otherwise. Default false; * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'getUserRoles', 'users.getRoles'); /** * Assign roles to a user * * @method assignRolestoUser * @memberOf module:management.ManagementClient.prototype * * @example * var parms = { id : 'USER_ID'}; * var data = { "roles" :["role1"]}; * * management.assignRolestoUser(params, data, function (err) { * if (err) { * // Handle error. * } * * // User assigned roles. * }); * * @param {Object} params params object * @param {String} params.id user_id * @param {Object} data data object containing list of role IDs * @param {String} data.roles Array of role IDs * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'assignRolestoUser', 'users.assignRoles'); /** * Assign users to a role * * @method assignUsersToRole * @memberOf module:management.ManagementClient.prototype * * @example * var params = { id :'ROLE_ID'}; * var data = { "users" : ["userId1","userId2"]}; * * management.roles.assignUsers(params, data, function (err, user) { * if (err) { * // Handle error. * } * * // permissions added. * }); * * @param {String} params.id ID of the Role. * @param {Object} data permissions data * @param {String} data.permissions Array of permissions * @param {String} data.permissions.permission_name Name of a permission * @param {String} data.permissions.resource_server_identifier Identifier for a resource * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'assignUsersToRole', 'roles.assignUsers'); /** * Remove roles from a user * * @method removeRolesFromUser * @memberOf module:management.ManagementClient.prototype * * @example * var parms = { id : 'USER_ID'}; * var data = { "roles" :["role1"]}; * * management.removeRolesFromUser(params, data, function (err) { * if (err) { * // Handle error. * } * * // User assigned roles. * }); * * @param {Object} params params object * @param {String} params.id user_id * @param {String} data data object containing list of role IDs * @param {String} data.roles Array of role IDs * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'removeRolesFromUser', 'users.removeRoles'); /** * Get user's permissions * * @method getUserPermissions * @memberOf module:management.ManagementClient.prototype * * @example * var params = { id: USER_ID, page: 0, per_page: 50, sort: 'date:-1', include_totals: true }; * * management.getUserPermissions(params, function (err, logs) { * if (err) { * // Handle error. * } * * console.log(logs); * }); * * @param {Object} params Get permissions data. * @param {String} params.id User id. * @param {Number} params.per_page Number of results per page. * @param {Number} params.page Page number, zero indexed. * @param {String} params.sort The field to use for sorting. Use field:order where order is 1 for ascending and -1 for descending. For example date:-1. * @param {Boolean} params.include_totals true if a query summary must be included in the result, false otherwise. Default false; * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'getUserPermissions', 'users.getPermissions'); /** * Assign permissions to a user * * @method assignPermissionsToUser * @memberOf module:management.ManagementClient.prototype * * @example * var parms = { id : 'USER_ID'}; * var data = { "permissions" : [{"permission_name" :"do:something" ,"resource_server_identifier" :"test123" }]}; * * management.assignPermissionsToUser(params, data, function (err) { * if (err) { * // Handle error. * } * * // User assigned permissions. * }); * * @param {Object} params params object * @param {String} params.id user_id * @param {String} data data object containing list of permissions * @param {String} data.permissions Array of permission IDs * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'assignPermissionsToUser', 'users.assignPermissions'); /** * Remove permissions from a user * * @method removePermissionsFromUser * @memberOf module:management.ManagementClient.prototype * * @example * var parms = { id : 'USER_ID'}; * var data = { "permissions" : [{"permission_name" :"do:something" ,"resource_server_identifier" :"test123" }]}; * * management.removePermissionsFromUser(params, data, function (err) { * if (err) { * // Handle error. * } * * // User assigned permissions. * }); * * @param {Object} params params object * @param {String} params.id user_id * @param {String} data data object containing list of permission IDs * @param {String} data.permissions Array of permission IDs * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'removePermissionsFromUser', 'users.removePermissions'); /** * Get a list of a user's Guardian enrollments. * * @method getGuardianEnrollments * @memberOf module:management.ManagementClient.prototype * * @example * management.getGuardianEnrollments({ id: USER_ID }, function (err, enrollments) { * console.log(enrollments); * }); * * @param {Object} data The user data object. * @param {String} data.id The user id. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod( ManagementClient, 'getGuardianEnrollments', 'users.getGuardianEnrollments' ); /** * Generate new Guardian recovery code. * * @method regenerateRecoveryCode * @memberOf module:management.ManagementClient.prototype * * @example * management.regenerateRecoveryCode({ id: USER_ID }, function (err, newRecoveryCode) { * console.log(newRecoveryCode); * }); * * @param {Object} data The user data object. * @param {String} data.id The user id. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod( ManagementClient, 'regenerateRecoveryCode', 'users.regenerateRecoveryCode' ); /** * Invalidate all remembered browsers for MFA. * * @method invalidateRememberBrowser * @memberOf module:management.ManagementClient.prototype * * @example * management.invalidateRememberBrowser({ id: USER_ID }, function (err) { * if (err) { * // Handle error. * } * * // Invalidated all remembered browsers. * }); * * @param {Object} data The user data object. * @param {String} data.id The user id. * @param {Function} [cb] Callback function. * * @return {Promise|undefined} */ utils.wrapPropertyMethod( ManagementClient, 'invalidateRememberBrowser', 'users.invalidateRememberBrowser' ); /** * Get user blocks by its id. * * @method getUserBlocks * @memberOf module:management.ManagementClient.prototype * * @example * management.getUserBlocks({ id: USER_ID }, function (err, blocks) { * if (err) { * // Handle error. * } * * console.log(blocks); * }); * * @param {Object} params The user data object.. * @param {String} params.id The user id. * @param {Function} [cb] Callback function * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'getUserBlocks', 'userBlocks.get'); /** * Unblock an user by its id. * * @method unblockUser * @memberOf module:management.ManagementClient.prototype * * @example * management.unblockUser({ id: USER_ID }, function (err) { * if (err) { * // Handle error. * } * * // User unblocked. * }); * * @param {Object} params The user data object.. * @param {String} params.id The user id. * @param {Function} [cb] Callback function * * @return {Promise|undefined} */ utils.wrapPropertyMethod(ManagementClient, 'unblockUser', 'userBlocks.delete'); /** * Get user blocks by its identifier. * * @method getUserBlocksByIdentifier * @memberOf module:management.ManagementClient.prototype * * @example * management.getUserBlocksByIdentifier({ identifier: USER_ID }, function (err, blocks) { * if (err) { * // Handle error. * } * * console.log(blocks); * }); * * @param {Object} params The user data object.. * @param {String} params.identifier The user identifier, any of: username, phone_number, email. * @param {Function} [cb] Callback function * * @return {Promise|undefined} */ utils.wrapPropertyMethod( ManagementClient, 'getUserBlocksByIdentifier', 'userBlocks.getByIdentifier' ); /** * Unblock an user by its id. * * @method unblockUser * @memberOf module:management.ManagementClient.prototype * * @example * management.unblockUserByIdentifier({ identifier: USER_ID }, function (err) { * if (err) { * // Handle error. * } * * // User unblocked. * }); * * @param {Object} params The user data object.. * @param {String} params.identifier The user identifier, any of: username, phone_number, email. * @param {Function} [cb] Callback function *