borgwarehouse/helpers/functions/tokenController.js
2024-08-31 21:01:08 +02:00

34 lines
1.2 KiB
JavaScript

import { promises as fs } from 'fs';
import path from 'path';
export default async function tokenController(API_KEY, FROM_IP) {
const jsonDirectory = path.join(process.cwd(), 'config');
const timestamp = new Date().toISOString();
try {
if (process.env.DISABLE_INTEGRATIONS === 'true') {
console.log(`API auth failed from : ${FROM_IP} [${timestamp}]`);
return null;
}
const usersList = await fs.readFile(jsonDirectory + '/users.json', 'utf8');
const users = JSON.parse(usersList);
const user = users.find(
(user) => Array.isArray(user.tokens) && user.tokens.some((token) => token.token === API_KEY)
);
if (user) {
const token = user.tokens.find((token) => token.token === API_KEY);
if (token && token.permissions && typeof token.permissions === 'object') {
console.log(
`API auth success with the token '${token.name}' of user '${user.username}' from : ${FROM_IP} [${timestamp}]`
);
return token.permissions;
}
}
console.log(`API auth failed from : ${FROM_IP} [${timestamp}]`);
return null;
} catch (error) {
throw new Error('Error with tokenController');
}
}