feat: jwt auth
This commit is contained in:
@@ -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}
|
||||
@@ -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),
|
||||
});
|
||||
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
import winston, { format } from "winston";
|
||||
import dotenv from 'dotenv';
|
||||
|
||||
dotenv.config();
|
||||
const logger = winston.createLogger({
|
||||
level:'info',
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user