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}
|
||||
Reference in New Issue
Block a user