diff --git a/api/src/cli/commands/security/key.ts b/api/src/cli/commands/security/key.ts new file mode 100644 index 0000000000..cec897cf32 --- /dev/null +++ b/api/src/cli/commands/security/key.ts @@ -0,0 +1,6 @@ +import { v4 as uuidv4 } from 'uuid'; + +export default async function generateKey(): Promise { + process.stdout.write(uuidv4()); + process.exit(0); +} diff --git a/api/src/cli/commands/security/secret.ts b/api/src/cli/commands/security/secret.ts new file mode 100644 index 0000000000..2441a231cc --- /dev/null +++ b/api/src/cli/commands/security/secret.ts @@ -0,0 +1,6 @@ +import { nanoid } from 'nanoid'; + +export default async function generateSecret(): Promise { + process.stdout.write(nanoid(32)); + process.exit(0); +} diff --git a/api/src/cli/index.ts b/api/src/cli/index.ts index d438bbb118..6abdec92cc 100644 --- a/api/src/cli/index.ts +++ b/api/src/cli/index.ts @@ -7,6 +7,8 @@ import count from './commands/count'; import dbInstall from './commands/database/install'; import dbMigrate from './commands/database/migrate'; import init from './commands/init'; +import keyGenerate from './commands/security/key'; +import secretGenerate from './commands/security/secret'; import rolesCreate from './commands/roles/create'; import usersCreate from './commands/users/create'; import usersPasswd from './commands/users/passwd'; @@ -30,6 +32,11 @@ export async function createCli(): Promise { program.command('start').description('Start the Directus API').action(startServer); program.command('init').description('Create a new Directus Project').action(init); + // Security + const securityCommand = program.command('security'); + securityCommand.command('key:generate').description('Generate the app key').action(keyGenerate); + securityCommand.command('secret:generate').description('Generate the app secret').action(secretGenerate); + const dbCommand = program.command('database'); dbCommand.command('install').description('Install the database').action(dbInstall); dbCommand