auth0-tenant-to-tenant-user-migration-tool
Version:
Auth0 tenant to tenant user migration tool
132 lines • 5 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.requestAuthOConfiguration = requestAuthOConfiguration;
exports.requestConnection = requestConnection;
exports.requestEmail = requestEmail;
exports.requestMigrationDetails = requestMigrationDetails;
exports.selectRolesToMigrate = selectRolesToMigrate;
const inquirer_1 = __importDefault(require("inquirer"));
const get_connections_1 = __importDefault(require("./get-connections"));
function extractDomain(input) {
try {
const url = new URL(input.includes('://') ? input : `https://${input}`);
return url.hostname.includes('.auth0.com') ? url.hostname : false;
}
catch {
return false;
}
}
async function requestAuthOConfiguration(type) {
const answers = await inquirer_1.default.prompt([
{
type: 'input',
name: 'domain',
message: `Enter your Auth0 ${type} domain (e.g., your-tenant.auth0.com):`,
filter: extractDomain,
validate: (input) => extractDomain(input)
? true
: 'Please enter a valid Auth0 domain (e.g., your-tenant.auth0.com).',
},
{
type: 'input',
name: 'clientId',
message: `Enter your Auth0 ${type} Client ID:`,
validate: (input) => (input ? true : 'Client ID is required.'),
},
{
type: 'password',
name: 'clientSecret',
message: `Enter your Auth0 ${type} Client Secret:`,
mask: '*',
validate: (input) => (input ? true : 'Client Secret is required.'),
},
]);
return answers;
}
async function requestConnection(type, domain, token, returnType) {
const connections = await (0, get_connections_1.default)(domain, token);
const choices = connections.map((conn) => ({
name: `${conn.name} (${conn.strategy})`,
value: conn[returnType],
}));
const answers = await inquirer_1.default.prompt([
{
type: 'list',
name: 'sourceConnection',
message: `Select the Auth0 ${type} connection:`,
choices,
},
]);
return answers.sourceConnection;
}
async function requestEmail() {
const answers = await inquirer_1.default.prompt([
{
type: 'input',
name: 'emailAddress',
message: 'Enter the email address of the user you want to import (leave blank to import all users from a connection):',
validate: (input) => !input || /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(input)
? true
: 'Please enter a valid email address or leave blank.',
},
]);
return answers.emailAddress;
}
async function requestMigrationDetails() {
const userFields = [
{
name: 'email',
value: 'email',
checked: true,
disabled: 'Selected by default',
},
{ name: 'user_id', value: 'user_id' },
{ name: 'email_verified', value: 'email_verified' },
{ name: 'username', value: 'username' },
{ name: 'phone_number', value: 'phone_number' },
{ name: 'phone_verified', value: 'phone_verified' },
{ name: 'given_name', value: 'given_name' },
{ name: 'family_name', value: 'family_name' },
{ name: 'name', value: 'name' },
{ name: 'nickname', value: 'nickname' },
{ name: 'picture', value: 'picture' },
{ name: 'created_at', value: 'created_at' },
{ name: 'updated_at', value: 'updated_at' },
{ name: 'identities', value: 'identities' },
{ name: 'app_metadata', value: 'app_metadata' },
{ name: 'user_metadata', value: 'user_metadata' },
{ name: 'last_login', value: 'last_login' },
{ name: 'logins_count', value: 'logins_count' },
{ name: 'multifactor', value: 'multifactor' },
];
const answers = await inquirer_1.default.prompt([
{
type: 'checkbox',
name: 'fields',
message: 'Select the Auth0 user fields you want to migrate :',
choices: userFields,
},
{
type: 'confirm',
name: 'upsert',
message: 'Do you want to upsert users (update if they already exist)?',
default: false,
},
]);
return { fields: [...answers.fields, 'email'], upsert: answers.upsert };
}
async function selectRolesToMigrate(roles) {
const answers = await inquirer_1.default.prompt([
{
type: 'checkbox',
name: 'roles',
message: 'Select the Auth0 roles you want to migrate :',
choices: roles.map((role) => ({ name: role.name, value: role })),
},
]);
return answers.roles;
}
//# sourceMappingURL=request-prerequiste-data.js.map