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.34 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: 'block', message: 'User Blocked?' } ]; async function setBlock({ email, block }) { const appContext = await compileStrapi(); const app = await createStrapi(appContext).load(); const cleanEmail = email?.trim().toLowerCase(); const cleanBlock = block?.trim().toLowerCase(); if (cleanBlock !== 'true' && cleanBlock !== 'false') { console.error('Invalid block status. Use "true" or "false".'); process.exit(1); } const blocked = cleanBlock === '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, { blocked }); } catch (err) { console.error(err.message); process.exit(1); } console.log(`Successfully set ${cleanEmail} block status to ${cleanBlock}`); process.exit(0); } /** * Change a user's block status */ const action = async (cmdOptions = {})=>{ const { email, block } = cmdOptions; if (_.isEmpty(email) && _.isEmpty(block) && process.stdin.isTTY) { const inquirer = await getInquirer(); const inquiry = await inquirer.prompt(promptQuestions); return setBlock(inquiry); } if (_.isEmpty(email) || _.isEmpty(block)) { console.error('Missing required options `email` or `block`'); process.exit(1); } return setBlock({ email, block }); }; /** * `$ strapi admin:block-user` */ const command = ()=>{ return createCommand('admin:block-user').alias('admin:block').description("Set a user's block status").option('-e, --email <email>', 'The user email').option('-b, --block <true/false>', 'The user block status').action(runAction('admin:block-user', action)); }; export { action, command }; //# sourceMappingURL=block-user.mjs.map