auth0-tenant-to-tenant-user-migration-tool
Version:
Auth0 tenant to tenant user migration tool
72 lines • 3.7 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.migrateUsers = void 0;
const pick_1 = __importDefault(require("lodash/pick"));
const get_management_token_1 = require("../utils/get-management-token");
const get_user_by_email_1 = __importDefault(require("../utils/get-user-by-email"));
const get_users_by_connection_1 = __importDefault(require("../utils/get-users-by-connection"));
const request_prerequiste_data_1 = require("../utils/request-prerequiste-data");
const with_graceful_exit_1 = __importDefault(require("../utils/with-graceful-exit"));
const import_users_1 = __importDefault(require("../utils/import-users"));
const logger_1 = __importDefault(require("../utils/logger"));
const migrateUsers = async () => {
const { domain: sourceDomain, clientId: sourceClientId, clientSecret: sourceClientSecret, } = await (0, request_prerequiste_data_1.requestAuthOConfiguration)('source');
const sourceToken = await (0, get_management_token_1.getManagementToken)(sourceDomain, sourceClientId, sourceClientSecret);
let exportedUsers = [];
const emailAddress = await (0, request_prerequiste_data_1.requestEmail)();
if (emailAddress) {
const foundUser = await (0, get_user_by_email_1.default)(sourceDomain, sourceToken, emailAddress);
if (!foundUser) {
throw new Error('User not found!');
}
exportedUsers.push(foundUser);
}
else {
const sourceConnection = await (0, request_prerequiste_data_1.requestConnection)('source', sourceDomain, sourceToken, 'name');
const foundUsers = await (0, get_users_by_connection_1.default)({
domain: sourceDomain,
connection: sourceConnection,
token: sourceToken,
});
if (foundUsers.length > 0) {
exportedUsers = exportedUsers.concat(foundUsers);
}
}
if (exportedUsers.length > 0) {
const { fields: fieldsToExtract, upsert } = await (0, request_prerequiste_data_1.requestMigrationDetails)();
const { domain: destinationDomain, clientId: destinationClientId, clientSecret: destinationClientSecret, } = await (0, request_prerequiste_data_1.requestAuthOConfiguration)('destination');
const destinationToken = await (0, get_management_token_1.getManagementToken)(destinationDomain, destinationClientId, destinationClientSecret);
const usersToImport = exportedUsers.map((user) => {
const newUser = (0, pick_1.default)(user, fieldsToExtract);
return {
...newUser,
...(newUser.user_id && {
user_id: newUser.user_id.replace('auth0|', ''),
}),
};
});
const destinationConnectionId = await (0, request_prerequiste_data_1.requestConnection)('destination', destinationDomain, destinationToken, 'id');
await (0, import_users_1.default)({
users: usersToImport,
token: destinationToken,
connectionId: destinationConnectionId,
tenantDomain: destinationDomain,
isUpsert: upsert,
});
}
else {
logger_1.default.info('No users found to migrate.');
}
};
exports.migrateUsers = migrateUsers;
const setupMigrateUsersCommand = (program) => {
program
.command('migrate-users')
.description('Migrate users between tenants')
.action((0, with_graceful_exit_1.default)(exports.migrateUsers));
};
exports.default = setupMigrateUsersCommand;
//# sourceMappingURL=migrate-users.js.map