Files
2025-10-31 19:51:09 -05:00

46 lines
1.1 KiB
JavaScript

import dotenv from 'dotenv';
import chalk from 'chalk';
import jwt from 'jsonwebtoken'
import { randomUUID } from 'node:crypto'
dotenv.config();
export default class AuthHandler {
ips = new Map()
#secret
constructor() {
this.#secret = process.env.JWT_SECRET || 'random-id-for-now-123013123u1o23o12i3ukjdsbvkfndijnx1ijs';
}
check(req, res) {
if(this.ips.get(req.headers["x-forwarded-for"])) {
console.log(chalk.green(" ", req.headers["x-forwarded-for"]))
return true
} else {
console.log(chalk.red(" ", req.headers["x-forwarded-for"]))
return false
}
}
login(req, res) {
const { login } = req.body;
if(login === process.env.LOGIN) {
this.ips.set(req.headers["x-forwarded-for"], new Date())
return true;
} else {
return false
}
}
sign(payload, options = {}) {
return jwt.sign(
payload,
this.#secret,
{ expiresIn: '30d', ...options }
);
}
verify(token) {
return jwt.verify(token, this.#secret)
}
}