diff --git a/package-lock.json b/package-lock.json index a865b28..67b23ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@lenne.tech/cli", - "version": "0.0.96", + "version": "0.0.97", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@lenne.tech/cli", - "version": "0.0.96", + "version": "0.0.97", "license": "MIT", "dependencies": { "@lenne.tech/cli-plugin-helper": "0.0.11", diff --git a/package.json b/package.json index cf5396d..3d4df1e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lenne.tech/cli", - "version": "0.0.96", + "version": "0.0.97", "description": "lenne.Tech CLI: lt", "keywords": [ "lenne.Tech", diff --git a/src/commands/tools/jwt-read.ts b/src/commands/tools/jwt-read.ts new file mode 100644 index 0000000..cff0443 --- /dev/null +++ b/src/commands/tools/jwt-read.ts @@ -0,0 +1,48 @@ +import { GluegunCommand } from 'gluegun'; +import { ExtendedGluegunToolbox } from '../../interfaces/extended-gluegun-toolbox'; + +/** + * Parse a JWT and show the payload + */ +const NewCommand: GluegunCommand = { + name: 'jwt-read', + alias: ['jr'], + description: 'Parse a JWT and show the payload', + hidden: false, + run: async (toolbox: ExtendedGluegunToolbox) => { + const { + helper, + print: { info, error }, + parameters, + } = toolbox; + + const jwt = await helper.getInput(parameters.first, { + name: 'JWT to parse', + showError: false, + }); + + if (!jwt) { + error('No JWT provided'); + return; + } + + // Hash password + const data = JSON.parse(Buffer.from(jwt.split('.')[1], 'base64').toString()) + info(data); + if (data.iat) { + info('iat: ' + new Date(data.iat * 1000)); + } + if (data.exp) { + info('exp: ' + new Date(data.exp * 1000)); + } + + if (!toolbox.parameters.options.fromGluegunMenu) { + process.exit(); + } + + // For tests + return `jwt-read`; + }, +}; + +export default NewCommand;