feat: jwt auth

This commit is contained in:
eneller
2026-03-16 23:41:13 +01:00
parent fa2203927a
commit 8be35e9403
10 changed files with 66 additions and 41 deletions

View File

@@ -1,13 +1,31 @@
import { Request } from "express"
import User from "../model/user"
import { JWT, JWK } from 'ts-jose';
import { importJWK, SignJWT, jwtVerify } from "jose";
const privateKey = process.env.FM_PRIVATE_KEY;
export function checkJWT(req: Request){
// TODO check JWT
return req.cookies.jwt
let key;
async function setKeyFromEnv() {
key = await importJWK(JSON.parse(process.env.FM_PRIVATE_KEY));
}
export function getJWT(user: User){
return 'toekn'
}
async function checkJWT(req: Request){
try {
let jwt= await jwtVerify(req.cookies.jwt, key);
const user = await User.findOne({where: { userID: jwt.payload.sub}});
return user
} catch (error) {
return null
}
}
async function getJWT(user: User){
let jwt = await new SignJWT()
.setSubject(user.userID)
.setProtectedHeader({ alg: 'HS256' })
.setIssuedAt()
.sign(key);
return jwt
}
export {getJWT, checkJWT, setKeyFromEnv}

View File

@@ -6,11 +6,11 @@ import Transaction from '../model/transaction';
// Initialize Sequelize
const db = new Sequelize({
dialect: 'postgres',
host: process.env.DB_HOST || 'localhost',
port: parseInt(process.env.DB_PORT || '5432'),
database: process.env.DB_NAME || 'postgres',
username: process.env.DB_USER || 'postgres',
password: process.env.DB_PASSWORD || 'pass',
host: process.env.FM_DB_HOST || 'localhost',
port: parseInt(process.env.FM_DB_PORT || '5432'),
database: process.env.FM_DB_NAME || 'postgres',
username: process.env.FM_DB_USER || 'postgres',
password: process.env.FM_DB_PASSWORD || 'pass',
logging: logger.debug.bind(logger),
});

View File

@@ -1,7 +1,4 @@
import winston, { format } from "winston";
import dotenv from 'dotenv';
dotenv.config();
const logger = winston.createLogger({
level:'info',
})