Boilerplate generator and deno tasks for monorepo
This commit is contained in:
25
lib/jwt.ts
Normal file
25
lib/jwt.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { create, verify, decode } from "https://deno.land/x/djwt@v2.8/mod.ts";
|
||||
|
||||
let key: CryptoKey;
|
||||
try {
|
||||
const storedKey = Deno.readTextFileSync('./key.txt');
|
||||
key = await crypto.subtle.importKey('jwk', JSON.parse(storedKey), {name: 'HMAC', hash: 'SHA-512'}, true, ['sign', 'verify']);
|
||||
} catch (error) {
|
||||
key = await crypto.subtle.generateKey(
|
||||
{ name: "HMAC", hash: {name: 'SHA-512'} },
|
||||
true,
|
||||
["sign", "verify"],
|
||||
);
|
||||
const keyToStore = await crypto.subtle.exportKey('jwk', key);
|
||||
Deno.writeTextFileSync('./key.txt', JSON.stringify(keyToStore));
|
||||
}
|
||||
|
||||
// console.log(key);
|
||||
|
||||
|
||||
// Todo give this the user type
|
||||
export const createUserSessionToken = async (user: any) => await create({ alg: 'HS512', typ: 'JWT' }, user, key);
|
||||
|
||||
export const verifyUserSessionToken = async (jwt: string) => await verify(jwt, key);
|
||||
|
||||
export const decodeUserSessionToken = async (jwt: string) => await decode(jwt);
|
Reference in New Issue
Block a user