UNPKG

@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
'use strict'; 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