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

89 lines (85 loc) 2.74 kB
'use strict'; var commander = require('commander'); var utils = require('@strapi/utils'); var _ = require('lodash'); var core = require('@strapi/core'); var helpers = require('../../utils/helpers.js'); var getInquirer = require('../../utils/get-inquirer.js'); const emailValidator = utils.yup.string().email('Invalid email address').lowercase(); const adminDeleteSchema = utils.yup.object().shape({ email: emailValidator }); /** * Same as create-user: `QuestionCollection` so async `validate` matches Inquirer typings * (not `ReadonlyArray<DistinctQuestion<Answers>>`). */ const promptQuestions = [ { type: 'input', name: 'email', message: 'Admin email?', async validate (value) { const validEmail = await emailValidator.validate(value); return validEmail === value || validEmail; } }, { type: 'confirm', name: 'confirm', message: 'Do you really want to delete this admin?' } ]; async function deleteAdmin({ email }) { const appContext = await core.compileStrapi(); const app = await core.createStrapi(appContext).load(); const user = await app.admin.services.user.findOneByEmail(email); if (!user) { console.error(`User with email "${email}" does not exist`); process.exit(1); } try { await app.admin.services.user.deleteById(user.id); } catch (err) { console.error(err.message); process.exit(1); } console.log(`Successfully deleted admin`); process.exit(0); } /** * Delete an admin user */ const action = async (cmdOptions = {})=>{ let { email } = cmdOptions; if (_.isEmpty(email) && process.stdin.isTTY) { const inquirer = await getInquirer.getInquirer(); const inquiry = await inquirer.prompt(promptQuestions); if (!inquiry.confirm) { process.exit(0); } ({ email } = inquiry); } if (_.isEmpty(email)) { console.error('Missing required option `email`'); process.exit(1); } try { await adminDeleteSchema.validate({ email }); } catch (err) { if (err instanceof utils.yup.ValidationError) { console.error(err.errors[0]); } process.exit(1); } return deleteAdmin({ email }); }; /** * `$ strapi admin:delete-user` */ const command = ()=>{ return commander.createCommand('admin:delete-user').alias('admin:delete').description('Delete an existing admin').option('-e, --email <email>', 'Email of the current admin').action(helpers.runAction('admin:delete-user', action)); }; exports.action = action; exports.command = command; //# sourceMappingURL=delete-user.js.map