diff options
author | 2022-11-18 18:36:18 +0100 | |
---|---|---|
committer | 2022-11-18 18:38:50 +0100 | |
commit | bb0eca80a77c315c2abefc8f24c7468e93494d66 (patch) | |
tree | eeeb444d96428cf61138a6b01e6bed5d1a635744 | |
parent | 3e4a64551fbfef23d0bae5565799a80c7ef402cb (diff) | |
download | it-tools-bb0eca80a77c315c2abefc8f24c7468e93494d66.tar.gz it-tools-bb0eca80a77c315c2abefc8f24c7468e93494d66.tar.zst it-tools-bb0eca80a77c315c2abefc8f24c7468e93494d66.zip |
added base tool structure
Diffstat (limited to '')
-rw-r--r-- | src/tools/index.ts | 2 | ||||
-rw-r--r-- | src/tools/jwt-parser/index.ts | 11 | ||||
-rw-r--r-- | src/tools/jwt-parser/jwt-parser.service.ts | 20 | ||||
-rw-r--r-- | src/tools/jwt-parser/jwt-parser.vue | 9 |
4 files changed, 42 insertions, 0 deletions
diff --git a/src/tools/index.ts b/src/tools/index.ts index bc5192a..ca4e5f9 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -1,6 +1,7 @@ import { LockOpen } from '@vicons/tabler'; import type { ToolCategory } from './tool'; +import { tool as jwtParser } from './jwt-parser'; import { tool as mimeTypes } from './mime-types'; import { tool as otpCodeGeneratorAndValidator } from './otp-code-generator-and-validator'; import { tool as base64FileConverter } from './base64-file-converter'; @@ -67,6 +68,7 @@ export const toolsByCategory: ToolCategory[] = [ metaTagGenerator, otpCodeGeneratorAndValidator, mimeTypes, + jwtParser, ], }, { diff --git a/src/tools/jwt-parser/index.ts b/src/tools/jwt-parser/index.ts new file mode 100644 index 0000000..eb1c6e4 --- /dev/null +++ b/src/tools/jwt-parser/index.ts @@ -0,0 +1,11 @@ +import { ArrowsShuffle } from '@vicons/tabler'; +import { defineTool } from '../tool'; + +export const tool = defineTool({ + name: 'JWT parser', + path: '/jwt-parser', + description: '', + keywords: ['jwt', 'parser'], + component: () => import('./jwt-parser.vue'), + icon: ArrowsShuffle, +}); diff --git a/src/tools/jwt-parser/jwt-parser.service.ts b/src/tools/jwt-parser/jwt-parser.service.ts new file mode 100644 index 0000000..120a099 --- /dev/null +++ b/src/tools/jwt-parser/jwt-parser.service.ts @@ -0,0 +1,20 @@ +import jwt_decode, { InvalidTokenError } from 'jwt-decode'; + +interface JWT { + header: Map<string, unknown>; + payload: Map<string, unknown>; +} + +export function safe_jwt_decode(raw_jwt: string): JWT { + try { + const header = jwt_decode(raw_jwt, { header: true }) as Map<string, unknown>; + const payload = jwt_decode(raw_jwt) as Map<string, unknown>; + return { header: header, payload: payload }; + } catch (e) { + if (e instanceof InvalidTokenError) { + return { header: new Map<string, unknown>(), payload: new Map<string, unknown>() }; + } else { + throw e; + } + } +} diff --git a/src/tools/jwt-parser/jwt-parser.vue b/src/tools/jwt-parser/jwt-parser.vue new file mode 100644 index 0000000..d54c238 --- /dev/null +++ b/src/tools/jwt-parser/jwt-parser.vue @@ -0,0 +1,9 @@ +<template> + +</template> + +<script setup lang="ts"> + +</script> + +<style lang="less" scoped></style> |