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

71 lines (68 loc) 2.37 kB
import _ from 'lodash'; import { createCommand } from 'commander'; import { compileStrapi, createStrapi } from '@strapi/core'; import { runAction } from '../../utils/helpers.mjs'; import { getInquirer } from '../../utils/get-inquirer.mjs'; const promptQuestions = [ { type: 'input', name: 'email', message: 'User email?' }, { type: 'input', name: 'active', message: 'User Active?' } ]; async function setActive({ email, active }) { const appContext = await compileStrapi(); const app = await 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(); 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 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(runAction('admin:active-user', action)); }; export { action, command }; //# sourceMappingURL=active-user.mjs.map