@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
1 lines • 8.71 kB
Source Map (JSON)
{"version":3,"file":"create-user.mjs","sources":["../../../../../src/cli/commands/admin/create-user.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport { yup } from '@strapi/utils';\nimport _ from 'lodash';\nimport inquirer from 'inquirer';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport { runAction } from '../../utils/helpers';\nimport type { StrapiCommand } from '../../types';\n\ninterface CmdOptions {\n email?: string;\n password?: string;\n firstname?: string;\n lastname?: string;\n}\n\nconst emailValidator = yup.string().email('Invalid email address').lowercase();\n\nconst passwordValidator = yup\n .string()\n .min(8, 'Password must be at least 8 characters long')\n .matches(/[a-z]/, 'Password must contain at least one lowercase character')\n .matches(/[A-Z]/, 'Password must contain at least one uppercase character')\n .matches(/\\d/, 'Password must contain at least one number');\n\nconst adminCreateSchema = yup.object().shape({\n email: emailValidator,\n password: passwordValidator,\n firstname: yup.string().trim().required('First name is required'),\n lastname: yup.string(),\n});\n\ninterface Answers {\n email: string;\n password: string;\n firstname: string;\n lastname: string;\n confirm: boolean;\n}\n\n/**\n * It's not an observable, in reality this is\n * `ReadOnlyArray<inquirer.DistinctQuestion<Answers>>`\n * but then the logic of the validate function needs to change.\n */\n// eslint-disable-next-line rxjs/finnish\nconst promptQuestions: inquirer.QuestionCollection<Answers> = [\n {\n type: 'input',\n name: 'email',\n message: 'Admin email?',\n async validate(value: string) {\n const validEmail = await emailValidator.validate(value);\n return validEmail === value || validEmail;\n },\n },\n {\n type: 'password',\n name: 'password',\n message: 'Admin password?',\n async validate(value: string) {\n const validPassword = await passwordValidator.validate(value);\n return validPassword === value || validPassword;\n },\n },\n { type: 'input', name: 'firstname', message: 'First name?' },\n { type: 'input', name: 'lastname', message: 'Last name?' },\n {\n type: 'confirm',\n name: 'confirm',\n message: 'Do you really want to create a new admin?',\n },\n];\n\nasync function createAdmin({ email, password, firstname, lastname }: CmdOptions) {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).load();\n\n const user = await app.admin!.services.user.exists({ email });\n\n if (user) {\n console.error(`User with email \"${email}\" already exists`);\n process.exit(1);\n }\n\n const superAdminRole = await app.admin!.services.role.getSuperAdmin();\n\n await app.admin!.services.user.create({\n email,\n firstname,\n lastname,\n isActive: true,\n roles: [superAdminRole.id],\n ...(password && { password, registrationToken: null }),\n });\n\n console.log(`Successfully created new admin`);\n process.exit(0);\n}\n\n/**\n * Create new admin user\n */\nconst action = async (cmdOptions: CmdOptions = {}) => {\n let { email, password, firstname, lastname } = cmdOptions;\n\n if (\n _.isEmpty(email) &&\n _.isEmpty(password) &&\n _.isEmpty(firstname) &&\n _.isEmpty(lastname) &&\n process.stdin.isTTY\n ) {\n const inquiry = await inquirer.prompt(promptQuestions);\n\n if (!inquiry.confirm) {\n process.exit(0);\n }\n\n ({ email, password, firstname, lastname } = inquiry);\n }\n\n try {\n await adminCreateSchema.validate({ email, password, firstname, lastname });\n } catch (err) {\n if (err instanceof yup.ValidationError) {\n console.error(err.errors[0]);\n }\n\n process.exit(1);\n }\n\n return createAdmin({ email, password, firstname, lastname });\n};\n\n/**\n * `$ strapi admin:create-user`\n */\nconst command: StrapiCommand = () => {\n return createCommand('admin:create-user')\n .alias('admin:create')\n .description('Create a new admin')\n .option('-e, --email <email>', 'Email of the new admin')\n .option('-p, --password <password>', 'Password of the new admin')\n .option('-f, --firstname <first name>', 'First name of the new admin')\n .option('-l, --lastname <last name>', 'Last name of the new admin')\n .action(runAction('admin:create-user', action));\n};\n\nexport { action, command };\n"],"names":["emailValidator","yup","string","email","lowercase","passwordValidator","min","matches","adminCreateSchema","object","shape","password","firstname","trim","required","lastname","promptQuestions","type","name","message","validate","value","validEmail","validPassword","createAdmin","appContext","compileStrapi","app","createStrapi","load","user","admin","services","exists","console","error","process","exit","superAdminRole","role","getSuperAdmin","create","isActive","roles","id","registrationToken","log","action","cmdOptions","_","isEmpty","stdin","isTTY","inquiry","inquirer","prompt","confirm","err","ValidationError","errors","command","createCommand","alias","description","option","runAction"],"mappings":"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"}