From 8b116f6debd6c64e1374087dfd127d44ec3e1f6d Mon Sep 17 00:00:00 2001 From: Danilo Polani Date: Wed, 20 Jul 2022 22:44:35 +0200 Subject: [PATCH] Add "security" commands to api CLI (#9400) * add command to generate app key * add command to generate secret * group security commands under the security group * add new security commands to cli docs * add disclaimer on deploy secret generation * remove duplicate hubspot embed code * remove .env overwrite feature to security commands * update the cli docs for security commands * return key generation directly in output * restore package-lock.json * Write secret directly Co-authored-by: rijkvanzanten --- api/src/cli/commands/security/key.ts | 6 ++++++ api/src/cli/commands/security/secret.ts | 6 ++++++ api/src/cli/index.ts | 7 +++++++ 3 files changed, 19 insertions(+) create mode 100644 api/src/cli/commands/security/key.ts create mode 100644 api/src/cli/commands/security/secret.ts 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