@strapi/strapi
Version:
An open source headless CMS solution to create and manage your own API. It provides a powerful dashboard and features to make your life easier. Databases supported: MySQL, MariaDB, PostgreSQL, SQLite
74 lines (70 loc) • 2.42 kB
JavaScript
;
var _ = require('lodash');
var commander = require('commander');
var core = require('@strapi/core');
var helpers = require('../../utils/helpers.js');
var getInquirer = require('../../utils/get-inquirer.js');
const promptQuestions = [
{
type: 'input',
name: 'email',
message: 'User email?'
},
{
type: 'input',
name: 'active',
message: 'User Active?'
}
];
async function setActive({ email, active }) {
const appContext = await core.compileStrapi();
const app = await core.createStrapi(appContext).load();
const cleanEmail = email?.trim().toLowerCase();
const cleanActive = active?.trim().toLowerCase();
if (cleanActive !== 'true' && cleanActive !== 'false') {
console.error('Invalid active status. Use "true" or "false".');
process.exit(1);
}
const isActive = cleanActive === 'true';
const user = await app.admin.services.user.findOneByEmail(cleanEmail);
if (!user) {
console.error(`User with email "${cleanEmail}" does not exist`);
process.exit(1);
}
try {
await app.admin.services.user.updateById(user.id, {
isActive
});
} catch (err) {
console.error(err.message);
process.exit(1);
}
console.log(`Successfully set ${cleanEmail} active status to ${cleanActive}`);
process.exit(0);
}
/**
* Change a user's active status
*/ const action = async (cmdOptions = {})=>{
const { email, active } = cmdOptions;
if (_.isEmpty(email) && _.isEmpty(active) && process.stdin.isTTY) {
const inquirer = await getInquirer.getInquirer();
const inquiry = await inquirer.prompt(promptQuestions);
return setActive(inquiry);
}
if (_.isEmpty(email) || _.isEmpty(active)) {
console.error('Missing required options `email` or `active`');
process.exit(1);
}
return setActive({
email,
active
});
};
/**
* `$ strapi admin:active-user`
*/ const command = ()=>{
return commander.createCommand('admin:active-user').alias('admin:active').description("Set a user's active status").option('-e, --email <email>', 'The user email').option('-a, --active <true/false>', 'The user active status').action(helpers.runAction('admin:active-user', action));
};
exports.action = action;
exports.command = command;
//# sourceMappingURL=active-user.js.map